Found while re-measuring the #4909 bucket for PR #4964: test-http-response-setheaders.js (staged with the node-core shim) exits with SIGSEGV (139) in ~6/8 runs and exit 1 ("Missing expected exception") otherwise — identical behavior on origin/main baseline and the PR branch, so it is pre-existing and unrelated to the #4909 client fixes.
Repro:
# stage common/ shim next to the test per scripts/node_core_subset.py
perry compile parallel/test-http-response-setheaders.js -o rsh.out # PERRY_ALLOW_UNIMPLEMENTED=1
for i in 1 2 3 4 5 6 7 8; do ./rsh.out >/dev/null 2>&1; echo -n "$? "; done
# → 139 1 139 139 139 139 1 139
The test exercises res.setHeaders(new globalThis.Headers({...})) after writeHead (expects ERR_HTTP_HEADERS_SENT) and a series of assert.throws(() => res.setHeaders(<bad arg>), { code: 'ERR_INVALID_ARG_TYPE' }) calls inside the request handler. The nondeterminism suggests a GC/longjmp interaction on the throw path rather than a plain logic bug.
Part of the #4909 triage residue (#2132 umbrella).
Found while re-measuring the #4909 bucket for PR #4964:
test-http-response-setheaders.js(staged with the node-core shim) exits with SIGSEGV (139) in ~6/8 runs and exit 1 ("Missing expected exception") otherwise — identical behavior onorigin/mainbaseline and the PR branch, so it is pre-existing and unrelated to the #4909 client fixes.Repro:
The test exercises
res.setHeaders(new globalThis.Headers({...}))afterwriteHead(expectsERR_HTTP_HEADERS_SENT) and a series ofassert.throws(() => res.setHeaders(<bad arg>), { code: 'ERR_INVALID_ARG_TYPE' })calls inside the request handler. The nondeterminism suggests a GC/longjmp interaction on the throw path rather than a plain logic bug.Part of the #4909 triage residue (#2132 umbrella).