MarshallOfSound

#54262: fix: deliver utilityProcess output written just before the child exits

Merged
Created: Sep 23, 2026, 7:09:53 PM
Merged: Sep 23, 2026, 9:10:18 PM
5 comments
Target: main

Description of Change

When the child exited, utilityProcess removed every listener from the child.stdout / child.stderr streams it hands out, so output the child wrote just before exiting (still in the pipe, or read but not yet emitted) never reached 'data' listeners. The streams are now left alone and end once the pipe has been drained; a stream that never got connected is ended on exit so readers don't wait forever. child.stdout / child.stderr still read as null after 'exit', as documented.

The stdout/stderr property specs and the electron/lol import spec read whatever had arrived by 'exit', which is how this showed up; they now wait for the expected output.

Checklist

Release Notes

Notes: Fixed utilityProcess dropping stdout/stderr output that the child wrote immediately before exiting.

Backports

42-x-y
Pending
Waiting for a manual backport
43-x-y
Merged
PR Number
#54279
Merged At
Sep 23, 2026, 10:42:14 PM
Released In
Not yet
Release Date
Not yet
44-x-y
Merged
PR Number
#54278
Merged At
Sep 23, 2026, 10:30:58 PM
Released In
Not yet
Release Date
Not yet
45-x-y
Pending
Waiting for a manual backport

Semver Impact

Major
Breaking changes
Minor
New features
Patch
Bug fixes
None
Docs, tests, etc.

Semantic Versioning helps users understand the impact of updates:

  • Major (X.y.z): Breaking changes that may require code modifications
  • Minor (x.Y.z): New features that maintain backward compatibility
  • Patch (x.y.Z): Bug fixes that don't change the API
  • None: Changes that don't affect using facing parts of Electron