docs(runner): diagnose the Pi fixture semaphore exhaustion

Retain a credential-free same-binary initdb reproduction with unchanged IPC totals and verified child/temp cleanup.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
DottaandPaperclip committed 2026-09-28 17:18:01 -05:00
1 parent 57b4d6a5f9
commit 0459722049
2 files changed
+40 -4

No files matched your search

+6 -2
View File
@@ -412,8 +412,12 @@ Product fixture. Canonical classification is `transient_infrastructure`, with
zero provider prompts and two unchanged post-attempt key-billing observations.
The fixture directory is gone and no matching process remains. A later read-only
host snapshot shows 87,263 of 87,381 SysV semaphores in use, supporting a resource
constraint; the original bootstrap stderr is unavailable, so its exact cause is
not claimed. No unrelated database or IPC object was changed. Further paid
constraint. A separate disposable diagnostic then reproduces the cause with the
same pinned PostgreSQL binary: `semget(..., 17, 03600)` fails with `No space left
on device` when only 16 semaphores are free. It exits in 0.557 seconds, removes
its temporary directory, leaves no child process, and leaves IPC totals unchanged.
The original Product bootstrap stderr remains unavailable. No unrelated database
or IPC object was changed. Further paid
qualification is held until a supported database resource path is available.
@@ -61,8 +61,40 @@
"attemptFixtureRemoved": true,
"scope": "read-only host capacity observation; unrelated IPC resources untouched"
},
"inference": "Near-limit SysV semaphore usage supports host resource exhaustion, but the exact initdb cause is unproven without original stderr.",
"unrelatedProcessesOrIpcModified": false
"inference": "A later credential-free initdb invocation of the same pinned PostgreSQL binary reproduced semaphore exhaustion with16 free and17 required. The original Product bootstrap stderr remains unavailable.",
"unrelatedProcessesOrIpcModified": false,
"disposableReproduction": {
"nativePackage": "@embedded-postgres/darwin-arm64@18.1.0-beta.16",
"initdbSha256": "5a6ad92c2ce915b1a13aa2f8f2b2199996daf0cbe6b9f1d0044a387303b368ec",
"arguments": [
"--pgdata=<private disposable directory>",
"--username=paperclip_fixture",
"--auth=trust",
"--encoding=UTF8",
"--locale=C",
"--no-sync"
],
"before": {
"sets": 5141,
"used": 87365,
"limit": 87381,
"recordedAt": "2026-09-28T22:17:28.611679+00:00"
},
"after": {
"sets": 5141,
"used": 87365,
"limit": 87381,
"recordedAt": "2026-09-28T22:17:29.168791+00:00"
},
"exitCode": 1,
"durationSeconds": 0.557,
"error": "FATAL: could not create semaphores: No space left on device",
"failedSystemCall": "semget(..., 17, 03600)",
"processGroupRemaining": false,
"temporaryDirectoryRemoved": true,
"providerCalls": 0,
"postgresServerStarted": false
}
},
"independentCleanup": {
"fixtureDirectoryRemoved": true,