lib: fix AbortSignal.any() observed-composite leak · nodejs/node@06b54fe · GitHub
Skip to content

Commit 06b54fe

Browse files
bitpshraduh95
authored andcommitted
lib: fix AbortSignal.any() observed-composite leak
An observed composite signal (one with an `abort` listener) is added to gcPersistentSignals so it stays alive long enough to fire. When one of its sources aborted, the composite was marked aborted but never removed from that set, so it was retained forever and its WeakRef was never pruned from a long-lived source's kDependantSignals. That set therefore grew without bound. Drop each transitively-aborted dependent from gcPersistentSignals, the same way the directly-aborted signal is already removed, so it can be collected and its dependant entries pruned. Fixes: #64476 Signed-off-by: Paul Bouchon <mail@bitpshr.net> PR-URL: #64481 Reviewed-By: Chemi Atlow <chemi@atlow.co.il> Reviewed-By: Edy Silva <edigleyssonsilva@gmail.com>
1 parent 539f5dc commit 06b54fe

2 files changed

Lines changed: 38 additions & 0 deletions

File tree

lib/internal/abort_controller.js

Lines changed: 7 additions & 0 deletions

test/parallel/test-abortsignal-drop-settled-signals.mjs

Lines changed: 31 additions & 0 deletions

0 commit comments

Comments
 (0)