Skip to content

parity runner: node-oracle helpers leak under fork pressure until the process table saturates (unkillable ?E state, reboot required) #6848

Description

@proggeramlug

During a long session on 2026-07-25, repeated ./scripts/run_gap_tests.sh runs accumulated hundreds of orphaned node-oracle helper processes (perry_parity_nod*, comm truncated), reparented to PID 1 in state ?/?E — unkillable (kill -9 dispatched per-PID, no reap) — until the per-user process table saturated: fork: Resource temporarily unavailable from the gap runner itself, then from every shell (ps hanging, git push failing). Only a reboot cleared them.

A single post-reboot gap run leaked nothing (3 helpers before and after), so the leak likely needs load/fork-pressure conditions — e.g. the runner failing to reap oracle processes when its own forks start failing, which then compounds.

Suggested hardening: the runner should (a) waitpid/kill its oracle helpers in an EXIT trap per test, (b) run helpers in a process group and signal the group, (c) bail out early when fork starts failing instead of spawning further.

Evidence: process-table snapshot showed dozens of (perry_parity_nod) entries with PPID 1; count check between runs: ps -u $(id -u) | grep -c perry_parity_nod.

Metadata

Metadata

Assignees

Labels

bugConfirmed defect or regressionparityCompatibility gap with Node.js, ECMAScript, or the supported ecosystemtoolingDeveloper tooling, CI, tests, or release infrastructure

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions