Host contract: the runtime flips the PROCESS's SIGPIPE to SIG_IGN on the first proc_spawn (and on http bind) and never restores it; print ignores flush errors, so a pipeline into head runs to completion and exits 0
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 48/100
- Issue type
- Bug
- Clarity
- Mostly clear
- Activity status
- Active
- Tech stack
- c
- Domain
- operating-systems
Research direction
Start with the probe files in ~/src/wt/briefs/conc-review/probes-{A,B,C}/ and inspect proc_install_sigpipe_ignore in src/builtins_host.c, http_early_bind/http_serve in src/ext_http.c, and print in src/builtins.c. Reproduce the pipeline behavior, then verify that writes no longer change the host's SIGPIPE disposition, print handles flush errors, and eigs_embed.h documents remaining process-global dispositions.
Written by the indexing model from the issue text.
Description
Found by the 2026-09-14 whole-runtime concurrency review (three independent reviewers, every finding below reproduced by execution on main @ a18deac unless marked reading). Probe files live in ~/src/wt/briefs/conc-review/probes-{A,B,C}/.
proc_install_sigpipe_ignore src/builtins_host.c:1437-1438 via pthread_once :1465; http_early_bind/http_serve do the same unconditionally (src/ext_http.c:604, :1792). print is fflush(stdout) with no error check (src/builtins.c:78-209).
Observed
p is proc_spawn of (["true"])
i is 0
loop while i < 200000:
print of f"line {i}"
i is i + 1
… | head -1: control (no spawn) rc=141 (SIGPIPE) in 0.03 s; with the spawn rc=0 in 0.59 s, stderr empty — 200k prints into a closed pipe, silently. For an embedder, the first subprocess or HTTP bind replaces the host's own SIGPIPE disposition process-wide; eigs_embed.h says nothing (SIGUSR1 is CLI-only, src/main.c:169-174).
Fix direction
Per-write suppression (MSG_NOSIGNAL on sockets; for pipes, block/unblock SIGPIPE around the write or use a save/restore) instead of a process-wide flip; make print check the flush and raise or exit on EPIPE; document the remaining process-global dispositions in eigs_embed.h.
- Dominant language
- C
- Stars
- 3
- Forks
- 7
- Avg merge
- 3h 58m
- Merged PRs (30d)
- 105
Getting set up
Starts the project's dev container in your browser, under your own GitHub account.
- Ships a Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from InauguralSystems/EigenScript
-
area:lint-tooling bug
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
InauguralSystems/EigenScript#1340 ·
Maintainers usually reply within 1 day
-
area:stdlib found-by:code-review kind:silent-wrong
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
InauguralSystems/EigenScript#1338 ·
Maintainers usually reply within 1 day
-
area:lint-tooling found-by:critic kind:docs-drift
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
InauguralSystems/EigenScript#1335 ·
Maintainers usually reply within 1 day
-
area:ci found-by:critic kind:gate-defect
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
InauguralSystems/EigenScript#1311 ·
Maintainers usually reply within 1 day
-
enrolment: decide test_gc_runner_controls.py (exempt vs enrol) and whether floors need a ratchetOpenarea:gates found-by:critic kind:decision
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
InauguralSystems/EigenScript#1280 · 1 comment ·
Maintainers usually reply within 1 day
All issues in InauguralSystems/EigenScript
Similar issues
-
Difficulty 1/5 1-3 hours Newbie friendliness 88/100
ClickHouse/pg_clickhouse#383 · 1 comment ·
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
johnsonjh/emu2-cpm86#68 · 1 comment ·
Maintainers usually reply within 1 day
-
Zenmap CrashOpenZenmap
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
Maintainers usually reply within 2 days
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
BasedHardware/omi#19306 ·
Maintainers usually reply within 1 day
-
Difficulty 1/5 Under an hour Newbie friendliness 88/100
fastfetch-cli/fastfetch#2619 ·
Maintainers usually reply within 1 day