Commit fcb50dc
test(ci): probe G — install ProcDump as JIT debugger for silent-kill capture
Probe A (PR #7855) ruled out Defender as the killer: with
DisableRealtimeMonitoring + DisableBehaviorMonitoring + DisableIOAVProtection
all = True, the silent ELIFECYCLE still fired (run 26470378618, Win
without plugins, `pad.ts > Tests > creates a new Pad with empty text`,
kill +470 ms post-test-start, exit 255). The captured event logs
showed:
- Application log: empty (zero entries during test phase)
- System log: only pre-test service stops; no SCM TerminateProcess
- Defender Operational: only stale 2026-05-18 runner provisioning
- Application Error / Hang / WER: zero entries
The fixed tasklist sidecar showed the dying Node process (PID 7036)
was completely healthy 1 second before death: HandleCount=323 stable,
ThreadCount=17 stable, WorkingSetSize ~321 MB stable, KernelModeTime
and UserModeTime growing linearly. No anomaly in OS-side process
state. Then dead 1 second later with zero entry in any Windows
event log.
That fingerprint — silent external termination with no event-log
trace and no anomaly in OS-side state — matches `__fastfail` (the
`int 29h` fast-fail intrinsic). libuv on Windows uses `__fastfail`
for certain internal assertion failures in its TCP and pipe paths
(uv_win.c, tcp-win.c, pipe-win.c). When triggered, it immediately
terminates the process bypassing all user-mode notification
including WER. The only standard tool that catches state across
__fastfail is a JIT-installed debugger.
Install Sysinternals ProcDump as the system JIT debugger:
- downloads procdump.zip from sysinternals.com
- extracts to C:\procdump
- `-i -ma` registers as the AeDebug handler, configured for full
memory dumps
- dumps land in node-report/dumps/ which the existing failure
artifact picks up
On the next silent ELIFECYCLE this captures a .dmp file with full
call stack across the kill — loadable in WinDbg with
"!analyze -v" to see the libuv assertion (or whatever else) that
fired the fast-fail. That should be the final word on what's killing
the process.
Built on top of probe-flake-defender-eventlog-sidecar (#7855)
because the event-log capture + sidecar fix are useful baselines
even after Defender's ruled out.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>1 parent 2415b5c commit fcb50dc
1 file changed
Lines changed: 54 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
214 | 214 | | |
215 | 215 | | |
216 | 216 | | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
217 | 244 | | |
218 | 245 | | |
219 | 246 | | |
| |||
397 | 424 | | |
398 | 425 | | |
399 | 426 | | |
| 427 | + | |
| 428 | + | |
| 429 | + | |
| 430 | + | |
| 431 | + | |
| 432 | + | |
| 433 | + | |
| 434 | + | |
| 435 | + | |
| 436 | + | |
| 437 | + | |
| 438 | + | |
| 439 | + | |
| 440 | + | |
| 441 | + | |
| 442 | + | |
| 443 | + | |
| 444 | + | |
| 445 | + | |
| 446 | + | |
| 447 | + | |
| 448 | + | |
| 449 | + | |
| 450 | + | |
| 451 | + | |
| 452 | + | |
| 453 | + | |
400 | 454 | | |
401 | 455 | | |
402 | 456 | | |
| |||
0 commit comments