You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
child_process.spawnSync may results an abort #38070
new tty.ReadStream(4);
child_process.spawnSync('str');
Then the node instance occurs an abort.
In my practice, the only value "4" results in the abort.
How often does it reproduce? Is there a required condition?
This abort can always be triggered following the steps above.
What is the expected behavior?
I noticed that nodejs docs say "In normal circumstances process.stdin will be the only tty.ReadStream instance in a Node.js process and there should be no reason to create additional instances.". Maybe some limitation for users to construct a tty.ReadStream is needed. If any error occurs, an exception or other similar error-reporting stuff should be thrown. There is no reason to abort the whole node process.
What do you see instead?
» node
Welcome to Node.js v14.15.1.
Type ".help" for more information.
> new tty.ReadStream(4);
<ref *1> ReadStream {
...
}
> child_process.spawnSync('str');
[2] 2461977 abort node
This is basically of the same kind as #37874, you’re interfering with an fd owned by libuv and see a crash as a consequence of that, not really surprising and not really something that you should do in any case.
Is using these constructors of both tty.ReadStream or tty.createStream illegal in userland?
Activity
[-]"process.spawnSync" may results an abort[/-][+]`child_process.spawnSync` may results an abort[/+]Ayase-252 commentedon Apr 4, 2021
Refs: #37780 #38021
Is using these constructors of both
tty.ReadStreamortty.createStreamillegal in userland?addaleax commentedon Apr 7, 2021
This is basically of the same kind as #37874, you’re interfering with an fd owned by libuv and see a crash as a consequence of that, not really surprising and not really something that you should do in any case.
No.
yashLadha commentedon Jan 21, 2022
@addaleax If there is no AI can we close this issue.