[P1][audio] Simplifier Stop et Abort autour d’un propriétaire de cycle de vie unique #6

Open
opened 2026-07-31 21:05:10 +00:00 by mathieu · 1 comment
Owner

Constat

Deux courses rendent l'état actuel ambigu (internal/audio/pwrecord/pwrecord.go:188-249, :307-350): un Abort() sans cause pendant Stop() n'est pas distingué de l'absence d'abort, et un second waiter Stop peut tuer le processus possédé par le premier appel lorsque son propre contexte expire.

Tâche

Modéliser explicitement abortRequested, réserver signal/kill au propriétaire de la transition et rendre les waiters purement observateurs. Éviter d'ajouter une nouvelle couche d'abstraction: simplifier l'automate existant.

Critères d'acceptation

  • Si Abort gagne avant validation, Stop ne retourne jamais de WAV.
  • L'annulation d'un waiter ne signale jamais le processus partagé.
  • Un seul appel possède la finalisation et les autres observent son résultat.
  • Les courses synchronisées passent 100 fois sous race.

Validation

go test -count=100 -race ./internal/audio/pwrecord

## Constat Deux courses rendent l'état actuel ambigu (`internal/audio/pwrecord/pwrecord.go:188-249`, `:307-350`): un `Abort()` sans cause pendant `Stop()` n'est pas distingué de l'absence d'abort, et un second waiter `Stop` peut tuer le processus possédé par le premier appel lorsque son propre contexte expire. ## Tâche Modéliser explicitement `abortRequested`, réserver signal/kill au propriétaire de la transition et rendre les waiters purement observateurs. Éviter d'ajouter une nouvelle couche d'abstraction: simplifier l'automate existant. ## Critères d'acceptation - Si Abort gagne avant validation, Stop ne retourne jamais de WAV. - L'annulation d'un waiter ne signale jamais le processus partagé. - Un seul appel possède la finalisation et les autres observent son résultat. - Les courses synchronisées passent 100 fois sous race. ## Validation `go test -count=100 -race ./internal/audio/pwrecord`

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

Correctif proposé et validé dans la PR #43 : https://git.2027a.net/mathieu/murmur/pulls/43.
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#6
No description provided.