Showing with 9 additions and 0 deletions.
  1. +5 −0 src/spawn_sync.cc
  2. +4 −0 test/simple/test-child-process-spawnsync.js
@@ -511,6 +511,11 @@ void SyncProcessRunner::CloseHandlesAndDeleteLoop() {
if (uv_loop_ != NULL) {
CloseStdioPipes();
CloseKillTimer();
// Close the process handle when ExitCallback was not called.
uv_handle_t* uv_process_handle =
reinterpret_cast<uv_handle_t*>(&uv_process_);
if (!uv_is_closing(uv_process_handle))
uv_close(uv_process_handle, NULL);

// Give closing watchers a chance to finish closing and get their close
// callbacks called.
@@ -39,6 +39,10 @@ console.log('sleep started');
var ret = spawnSync('sleep', ['1']);
console.log('sleep exited');

// Error test when command does not exist
var ret_err = spawnSync('command_does_not_exist');
assert.strictEqual(ret_err.error.code, 'ENOENT');

process.on('exit', function() {
assert.strictEqual(ret.status, 0);