Skip to content
This repository was archived by the owner on Apr 22, 2023. It is now read-only.
This repository was archived by the owner on Apr 22, 2023. It is now read-only.

Nested child_processes piping to stdout cause freeze #1726

@isaacs

Description

@isaacs

Test script:

;(function () {

var gen = +(process.argv[2] || 0);
var maxGen = 5;


if (gen === maxGen) {
  console.log("hit maxGen, exiting", maxGen);
  return;
}

var ch = require("child_process");
var cp = ch.spawn("node", [__filename, gen + 1]);

console.log("gen=%d", gen);

var timer = setTimeout(function () {
  throw new Error("timeout! gen="+gen);
}, 1000);

cp.on("exit", function (code) {
  console.error("exit %d from gen %d", code, gen + 1);
  clearTimeout(timer);
})

cp.stdout.pipe(process.stdout);
cp.stderr.pipe(process.stderr);

})();

Output:

$ node no-exit.js 
gen=0
gen=1
gen=2
gen=3
gen=4
hit maxGen, exiting 5
exit 0 from gen 5
exit 0 from gen 4

/Users/isaacs/dev-src/js/semver/no-exit.js:19
  throw new Error("timeout! gen="+gen);
        ^
Error: timeout! gen=0
    at Object._onTimeout (/Users/isaacs/dev-src/js/semver/no-exit.js:19:9)
    at Timer.ontimeout (timers_uv.js:84:39)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions