The Wire · Showcase
NODE PLUGS TIMER MEMORY LEAK, FIXES FFI SIGNATURE DOUBLE-EVALUATION
By RepoJournal · Filed · About Node.js
Node's garbage collector was holding onto timer references it shouldn't have, and a critical FFI vulnerability let native functions receive different signatures than JavaScript thought it was passing.
The timer memory leak [1] is the bigger ship right now. After timers fire, Node was failing to clean up async context store references, preventing garbage collection. The fix iterates over active stores and clears relevant symbols, but the PR notes this pattern needs extending to immediates and intervals too. In parallel, the FFI signature double-evaluation bug [2] was letting attackers craft payloads where native code and the JavaScript wrapper disagreed on what arguments a function accepted. An accessor that mutates `signature.arguments` could make an eight-argument native function appear as fewer arguments to Node's type safety layer. Both merit immediate attention in your next patch cycle. On the surface improvements front, Node's shipping styled `--help` output [3] using util.styleText for bold headers and colored option names, though piped output stays plain. The doc-kit team is also hardening the deprecations table of contents [5], preserving DEP codes so engineers can find deprecations by ID instead of having them stripped from the sidebar.
One email a day. Unsubscribe in one click.
What actually shipped in Node.js, written up every day — commits, pull requests, releases, and security advisories.
One email a day. Unsubscribe in one click. Read a past issue →
Action items
- → Review PR #53443 for timer cleanup scope extension to immediates and intervals nodejs/node [immediate]
- → Audit FFI usage for accessor-based payload injection in PR #64559 nodejs/node [immediate]
- → Verify KangarooTwelve customization limits align with pending OpenSSL changes [ref:5] nodejs/node [plan]
- → Test styled --help output with piping and NO_COLOR env nodejs/node [monitor]
References
- [1] timers: do not retain a reference to the async store after firing ↗ nodejs/node
- [2] ffi: evaluate function signatures once ↗ nodejs/node
- [3] cli: style node --help output with util.styleText nodejs/node
- [4] crypto: limit KangarooTwelveParams customization to 512 bytes ↗ nodejs/node
- [5] fix: preserve deprecation codes in table of contents ↗ nodejs/doc-kit