Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

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

Open
#1,151 0 comments 0 reactions 0 assignees View on GitHub

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

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

area:runtime-vm bug

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

Open in Codespaces

Starts the project's dev container in your browser, under your own GitHub account.

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from InauguralSystems/EigenScript

All issues in InauguralSystems/EigenScript

Similar issues

More C issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.