🤖 Concurrency primitive and fileLock hazards found by the formal models (#5309, #5319 follow-ups)
I maintainer di solito rispondono entro 1 giorno
@ThomasK33 ci sta già lavorando.
Dal 30/9/2026.
Valutazione
Questa issue non è ancora stata valutata.
Descrizione
Tracking issue for concurrency-primitive hazards found while modeling them (formal/primitives/, formal/filelock/). None of these was fixed in #5309 or #5319.
AsyncSemaphore.releaseSlot()is still public (from #5309).src/node/utils/concurrency/asyncSemaphore.tsexposes it, so a caller can release a slot it never acquired and break the FIFO hand-off. Make it private, or route all releases through the returned lock handle.MutexMapis not reentrant (src/node/utils/concurrency/mutexMap.ts). A nestedwithLockon the same key deadlocks. At minimum, say this in the doc comment. Optionally, assert on nested use in tests.KeyedFifoLock.acquirewith a far deadline times out at once (src/node/services/workflows/keyedFifoLock.ts). The timer delay isdeadline - Date.now(). Node clamps delays above 2^31-1 ms (about 24.8 days) to 1 ms, so such a waiter resolvesnullalmost immediately. Clamp the delay, or re-arm the timer in chunks.- fileLock swallows unlink failures for
.stale-*graveyard files (from #5319). Failed cleanups are silent, so graveyard files can pile up unnoticed. Log them at debug level. - fileLock reclamation fails closed at
MAX_RECLAIM_DEPTH= 8 (src/node/utils/concurrency/fileLock.ts). This is intended, but the user-facing fix is "remove it manually". Check whether this depth is reachable in practice, and give the manual-recovery step a documented home.
Generated with xum • Model: anthropic:claude-opus-5-5 • Thinking: high • Cost: $37.39
- Lingua principale
- TypeScript
- Stelle
- 2.1k
- Fork
- 139
- Merge medio
- 3h 35m
- PR unite (30g)
- 950
Preparare l'ambiente
- Include un Dockerfile o un file Docker Compose
- Nessun modello di pull request
- Nessuna guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di coder/xum
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
I maintainer di solito rispondono entro 1 giorno
Issue simili
-
test-reliability
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
Azure/azure-sdk-for-js#40672 · 1 reazione ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
HarperFast/studio#2067 ·
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
documentation
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
liberation-data/drivine#639 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno