[P2][sysexec] Ne pas bufferiser stdout des commandes à effet de bord #25

Open
opened 2026-07-31 21:05:14 +00:00 by mathieu · 2 comments
Owner

Constat

Clipboard et injection ignorent stdout, mais OSExecutor.Run le capture dans un bytes.Buffer non borné (internal/sysexec/sysexec.go:55-70, internal/clipboard/clipboard.go:60-73, internal/inject/inject.go:49-77). Un helper bruyant peut allouer arbitrairement pendant son timeout.

Tâche

Fournir un chemin d'exécution qui discard stdout, ou le borne strictement, pour les commandes dont aucun caller ne consomme la sortie.

Critères d'acceptation

  • La mémoire ne dépend plus du volume stdout de wl-copy/wtype.
  • Un helper infini est tué et reapé au deadline.
  • stderr reste local et n'entre pas dans les erreurs publiques.

Validation

go test -race ./internal/sysexec ./internal/clipboard ./internal/inject ./internal/sink

## Constat Clipboard et injection ignorent stdout, mais `OSExecutor.Run` le capture dans un `bytes.Buffer` non borné (`internal/sysexec/sysexec.go:55-70`, `internal/clipboard/clipboard.go:60-73`, `internal/inject/inject.go:49-77`). Un helper bruyant peut allouer arbitrairement pendant son timeout. ## Tâche Fournir un chemin d'exécution qui discard stdout, ou le borne strictement, pour les commandes dont aucun caller ne consomme la sortie. ## Critères d'acceptation - La mémoire ne dépend plus du volume stdout de `wl-copy`/`wtype`. - Un helper infini est tué et reapé au deadline. - stderr reste local et n'entre pas dans les erreurs publiques. ## Validation `go test -race ./internal/sysexec ./internal/clipboard ./internal/inject ./internal/sink`

Correctif proposé dans la PR #40 (#40). Les packages sysexec/clipboard/inject/sink/session passent sous race.

Correctif proposé dans la PR #40 (https://git.2027a.net/mathieu/murmur/pulls/40). Les packages sysexec/clipboard/inject/sink/session passent sous race.

Correctif proposé et validé dans la PR #40 : #40.

Correctif proposé et validé dans la PR #40 : https://git.2027a.net/mathieu/murmur/pulls/40.
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
mathieu/murmur#25
No description provided.