diff --git a/lib/_debugger.js b/lib/_debugger.js index 4dd9f536336..f9e24768fc2 100644 --- a/lib/_debugger.js +++ b/lib/_debugger.js @@ -25,6 +25,7 @@ var util = require('util'), vm = require('vm'), repl = require('repl'), inherits = util.inherits, + assert = require('assert'), spawn = require('child_process').spawn; exports.start = function(argv, stdin, stdout) { @@ -1612,6 +1613,7 @@ Interface.prototype.trySpawn = function(cb) { childArgs = this.args; this.killChild(); + assert(!this.child); if (this.args.length === 2) { var match = this.args[1].match(/^([^:]+):(\d+)$/); @@ -1647,12 +1649,10 @@ Interface.prototype.trySpawn = function(cb) { } } - if (!this.child) { - this.child = spawn(process.execPath, childArgs); + this.child = spawn(process.execPath, childArgs); - this.child.stdout.on('data', this.childPrint.bind(this)); - this.child.stderr.on('data', this.childPrint.bind(this)); - } + this.child.stdout.on('data', this.childPrint.bind(this)); + this.child.stderr.on('data', this.childPrint.bind(this)); this.pause(); @@ -1709,8 +1709,10 @@ Interface.prototype.trySpawn = function(cb) { client.connect(port, host); } - setTimeout(function() { - self.print('connecting to port ' + port + '..', true); - attemptConnect(); - }, 50); + this.child.stderr.once('data', function() { + setImmediate(function() { + self.print('connecting to port ' + port + '..', true); + attemptConnect(); + }); + }); }; diff --git a/test/debugger/helper-debugger-repl.js b/test/debugger/helper-debugger-repl.js index 409e4f54d93..6346457af2b 100644 --- a/test/debugger/helper-debugger-repl.js +++ b/test/debugger/helper-debugger-repl.js @@ -91,7 +91,7 @@ function startDebugger(scriptToDebug) { }); quit(); - }, 5000).unref(); + }, 10000).unref(); process.once('uncaughtException', function(e) { console.error('UncaughtException', e, e.stack);