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
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 48/100
- Tipo de issue
- Error
- Claridad
- Bastante claro
- Estado de actividad
- Activo
- Stack tecnológico
- c
- Área
- operating-systems
Línea de trabajo
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.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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.
- Lenguaje dominante
- C
- Estrellas
- 3
- Forks
- 7
- Merge medio
- 4 h 5 min
- PR fusionados (30 d)
- 116
Preparar el entorno
Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.
- Incluye un Dockerfile o un archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de InauguralSystems/EigenScript
-
area:docs good first issue kind:docs-drift
Dificultad 1/5 Menos de una hora Aptitud para principiantes 92/100
InauguralSystems/EigenScript#1400 ·
Los mantenedores suelen responder en 1 día
-
area:docs good first issue kind:docs-drift
Dificultad 2/5 1-3 horas Aptitud para principiantes 90/100
InauguralSystems/EigenScript#1396 ·
Los mantenedores suelen responder en 1 día
-
docs/BUILTINS.md: task_spawn row says task_yield/task_join 'land in a later increment'; both existAbiertoarea:docs good first issue kind:docs-drift
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
InauguralSystems/EigenScript#1392 ·
Los mantenedores suelen responder en 1 día
-
area:embed kind:silent-wrong
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
InauguralSystems/EigenScript#1387 ·
Los mantenedores suelen responder en 1 día
-
area:stdlib kind:silent-wrong
Dificultad 2/5 1-3 horas Aptitud para principiantes 86/100
InauguralSystems/EigenScript#1378 ·
Los mantenedores suelen responder en 1 día
Todos los issues de InauguralSystems/EigenScript
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
python-pillow/Pillow#10087 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
OpenPrinting/cups#1729 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
awslabs/amazon-kinesis-video-streams-webrtc-sdk-c#2406 ·
Los mantenedores suelen responder en 2 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 86/100
DaveGamble/cJSON#1094 ·
-
status:needs-triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 90/100
PX4/PX4-Autopilot#28923 ·
Los mantenedores suelen responder en 1 día