Skip to content

Fix unhandled errors after child process input interruption - #9004

Merged
tim-smart merged 3 commits into
mainfrom
agent/effect-bot/92214974e715
Oct 11, 2026
Merged

tim-smart merged 3 commits into
mainfrom
agent/effect-bot/92214974e715

Conversation

@effect-bot

Copy link
Copy Markdown
Contributor

Summary

  • Keep a fallback error listener on child stdin and additional input writables until close, covering buffered-write errors after sink interruption.
  • Preserve NodeSink's active error propagation and remove the fallback on stream close; generic NodeSink behavior is unchanged.
  • Include the existing isolated stdin/fd3 regressions from the separate test-only run, unchanged, and a patch changeset.

Validation

  • Linux / Node 26.7.0: targeted NodeChildProcessSpawner and NodeSink suites, 90 tests passed.
  • pnpm lint-fix and pnpm check passed (all toolchain commands via nix develop -c).
  • Ad hoc Node adapter probe: active stdin EPIPE and fd3 ECONNRESET still return mapped PlatformErrors with the expected methods.
  • Bun 1.3.13: both existing buffered-input fixtures report Failure, remain alive 500 ms, and exit 0.
  • Limitations: Bun's active-write probe completed successfully rather than emitting a writable error, so active error propagation was confirmed on Node only. macOS, Windows, and the reporter's exact Node/Bun versions were not tested. CI results are not yet collected.

Closes #9002
Closes EFF-1972

@changeset-bot

changeset-bot Bot commented Oct 11, 2026 •

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 2b71f00

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 32 packages
Name Type
@effect/platform-node-shared Patch
effect Patch
@effect/opentelemetry Patch
@effect/vitest Patch
@effect/ai-anthropic Patch
@effect/ai-cloudflare Patch
@effect/ai-openai-compat Patch
@effect/ai-openai Patch
@effect/ai-openrouter Patch
@effect/ai-typesafe Patch
@effect/atom-react Patch
@effect/atom-solid Patch
@effect/atom-vue Patch
@effect/platform-browser Patch
@effect/platform-bun Patch
@effect/platform-deno Patch
@effect/platform-node Patch
@effect/sql-clickhouse Patch
@effect/sql-d1 Patch
@effect/sql-libsql Patch
@effect/sql-mssql Patch
@effect/sql-mysql2 Patch
@effect/sql-pg Patch
@effect/sql-pglite Patch
@effect/sql-sqlite-bun Patch
@effect/sql-sqlite-do Patch
@effect/sql-sqlite-node Patch
@effect/sql-sqlite-react-native Patch
@effect/sql-sqlite-wasm Patch
@effect/docgen Patch
@effect/doctest Patch
@effect/openapi-generator Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@effect-janitor effect-janitor Bot added the 4.0 label Oct 11, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Bundle Size Analysis

Generated from PR build output; treat the content below as untrusted.

File Name Current Size Previous Size Difference
arbitrary-combinators.ts 38.84 KB 38.84 KB 0.00 KB (0.00%)
basic.ts 7.07 KB 7.07 KB 0.00 KB (0.00%)
batching.ts 10.15 KB 10.15 KB 0.00 KB (0.00%)
brand.ts 6.73 KB 6.73 KB 0.00 KB (0.00%)
cache.ts 10.92 KB 10.92 KB 0.00 KB (0.00%)
config.ts 22.32 KB 22.32 KB 0.00 KB (0.00%)
differ.ts 21.35 KB 21.35 KB 0.00 KB (0.00%)
http-client.ts 22.73 KB 22.73 KB 0.00 KB (0.00%)
http-router.ts 34.17 KB 34.17 KB 0.00 KB (0.00%)
logger.ts 11.25 KB 11.25 KB 0.00 KB (0.00%)
metric.ts 9.04 KB 9.04 KB 0.00 KB (0.00%)
optic.ts 6.96 KB 6.96 KB 0.00 KB (0.00%)
pubsub.ts 15.24 KB 15.24 KB 0.00 KB (0.00%)
queue.ts 12.16 KB 12.16 KB 0.00 KB (0.00%)
schedule.ts 11.27 KB 11.27 KB 0.00 KB (0.00%)
schema-bigdecimal.ts 13.78 KB 13.78 KB 0.00 KB (0.00%)
schema-binary.ts 40.03 KB 40.03 KB 0.00 KB (0.00%)
schema-class.ts 21.11 KB 21.11 KB 0.00 KB (0.00%)
schema-fromJsonSchemaDocument.ts 32.16 KB 32.16 KB 0.00 KB (0.00%)
schema-representation-roundtrip.ts 27.33 KB 27.33 KB 0.00 KB (0.00%)
schema-string-transformation.ts 14.54 KB 14.54 KB 0.00 KB (0.00%)
schema-string.ts 12.04 KB 12.04 KB 0.00 KB (0.00%)
schema-template-literal.ts 16.11 KB 16.11 KB 0.00 KB (0.00%)
schema-toArbitrary.ts 38.37 KB 38.37 KB 0.00 KB (0.00%)
schema-toCodeDocument.ts 25.36 KB 25.36 KB 0.00 KB (0.00%)
schema-toCodecJson.ts 20.28 KB 20.28 KB 0.00 KB (0.00%)
schema-toEquivalence.ts 20.49 KB 20.49 KB 0.00 KB (0.00%)
schema-toFormatter.ts 20.59 KB 20.59 KB 0.00 KB (0.00%)
schema-toJsonSchemaDocument.ts 25.06 KB 25.06 KB 0.00 KB (0.00%)
schema-toRepresentation.ts 20.57 KB 20.57 KB 0.00 KB (0.00%)
schema.ts 20.33 KB 20.33 KB 0.00 KB (0.00%)
stm.ts 13.29 KB 13.29 KB 0.00 KB (0.00%)
stream.ts 10.00 KB 10.00 KB 0.00 KB (0.00%)

@tim-smart
tim-smart merged commit 251f849 into main Oct 11, 2026
12 checks passed
@tim-smart
tim-smart deleted the agent/effect-bot/92214974e715 branch October 11, 2026 06:37
@effect-bot effect-bot mentioned this pull request Oct 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

NodeChildProcessSpawner: interrupting a child's stdin stream crashes the process with an unhandled EPIPE

2 participants