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

No one assigned

    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