Skip to content

util.inspect({level: "info"}) exits the debug session #4440

Description

@learnerbyheart

When debugging in node.js 5.3.0 the script bug.js

var util = require('util');
util.inspect({level: "info "});
console.log("Test");

with node debug bug.js, the debugging session exits. I tried the same in node.js 4.2.4 and it doesn't. When debugging the difference in lib/util.js, line 324 in 5.3.0 looks like this:

var promiseInternals = inspectPromise(value);

and line 319 in 4.2.4 looks like:

var promiseInternals = value instanceof Promise && inspectPromise(value);

As value is not an instance of Promise, inspectPromise(value) is called in 5.3.0. Then inspectPromise calls ensureDebugIsInitialized() which on the other hand calls require('vm').runInDebugContext('Debug'). This causes the debugging session to exit. The issue was tested in Ubuntu 14.04 LTS.

Activity

  1. added
    utilIssues and PRs related to the built-in util module.
    on Dec 27, 2015
  2. mscdex commented on Dec 27, 2015

    @mscdex
    Contributor

    Can you clarify what you're doing step-by-step? You mention running that script with node debug but where does the util.inspect({level: 'info'}) come into play? I ran the script as you say, it breaks on the first statement and continuing execution at the debug> prompt results in "Finished" logged to stdout as expected.

  3. learnerbyheart commented on Dec 27, 2015

    @learnerbyheart
    Author

    Sorry, that was an copy and paste fault by me. I updated my initial comment where the right bug.js script is described.

  4. learnerbyheart commented on Dec 27, 2015

    @learnerbyheart
    Author

    But the before mentioned script bug2.js

    var vm = require('vm');
    vm.runInDebugContext('Debug');
    console.log("Finished");

    exits after vm.runInDebugContext('Debug'); when I run node debug bug2.js.

  5. mscdex commented on Dec 27, 2015

    @mscdex
    Contributor

    I'm not able to reproduce that on master:

    $ cat bug.js 
    var vm = require('vm');
    vm.runInDebugContext('Debug');
    console.log("Finished");
    $ ./node debug bug.js
    < Debugger listening on port 5858
    connecting to 127.0.0.1:5858 ... ok
    break in bug.js:1
    > 1 var vm = require('vm');
      2 vm.runInDebugContext('Debug');
      3 console.log("Finished");
    debug> c
    < Finished
    debug> .exit
    
  6. mscdex commented on Dec 27, 2015

    @mscdex
    Contributor

    Similarly with your updated code example, I cannot reproduce the problem there either on master:

    $ cat bug2.js 
    var util = require('util');
    util.inspect({level: "info "});
    console.log("Test");
    $ ./node debug bug2
    < Debugger listening on port 5858
    connecting to 127.0.0.1:5858 ... ok
    break in bug2.js:1
    > 1 var util = require('util');
      2 util.inspect({level: "info "});
      3 console.log("Test");
    debug> c
    < Test
    debug> .exit
    
  7. mscdex commented on Dec 27, 2015

    @mscdex
    Contributor

    Perhaps there's something that needs to be backported to 5.x yet?

  8. learnerbyheart commented on Dec 27, 2015

    @learnerbyheart
    Author

    I debugged the script

    var vm = require('vm');
    vm.runInDebugContext('Debug');
    console.log("Finished");

    in a new workspace in cloud9 (https://c9.io/) which has node 4.1.1 and Ubuntu 14.04 LTS, on my private Laptop which has node 5.3.0 and Ubuntu 15.10 and on a new VM with a fresh Ubuntu 14.04 LTS and node 4.2.4. In every environment the debugging exits after vm.runInDebugContext('Debug');. Usually I code in WebStorm which exited with exit code 139 when debugging it. When debugging it via node-inspector as well with cloud9 the error message was a segmentation fault.
    Does it has something to do with Ubuntu as the operating system? Which os did you use? Does the master branch differs from the 5.3.0 tag?

  9. mscdex commented on Dec 27, 2015

    @mscdex
    Contributor

    Yes, master represents the next major version. Necessary commits are backported to versioned branches (e.g. v4.x, v5.x, etc.).

    It shouldn't be OS-related. I don't know offhand what needs to be backported, there's a fair amount of different stuff in master (including a new "major" v8 version).

  10. Trott commented on Dec 27, 2015

    @Trott
    Member

    On OSX, it's broken for me in Node 5.3.0 but works fine with current master.

    5.3.0:

    $ cat test.js
    var vm = require('vm');
    vm.runInDebugContext('Debug');
    console.log("Finished");
    $ node debug test.js 
    < Debugger listening on port 5858
    connecting to 127.0.0.1:5858 ... ok
    break in test.js:1
    > 1 var vm = require('vm');
      2 vm.runInDebugContext('Debug');
      3 console.log("Finished");
    debug> c
    program terminated
    debug> .exit
    

    master:

    $ ~/io.js/node debug test.js 
    < Debugger listening on port 5858
    connecting to 127.0.0.1:5858 ... ok
    break in test.js:1
    > 1 var vm = require('vm');
      2 vm.runInDebugContext('Debug');
      3 console.log("Finished");
    debug> c
    < Finished
    debug> .exit
    
  11. Trott commented on Dec 27, 2015

    @Trott
    Member

    Maybe it was fixed by 25776f3?

  12. bnoordhuis commented on Dec 28, 2015

    @bnoordhuis
    Member

    25776f3 is almost certainly the fix. (EDIT: And hasn't been released yet.)

  13. learnerbyheart commented on Dec 29, 2015

    @learnerbyheart
    Author

    In which release will it be inculded? 5.4.0? When will this release be published?

  14. Trott commented on Dec 29, 2015

    @Trott
    Member

    @LucasMoody It should be in the next release which will either be 5.3.1 or 5.4.0 depending on what else is in the release.

    For the stable release line (currently 5.x), the goal is to have a release every 1-2 weeks. The release team seems to be meeting that goal. There's probably not much activity this week, though, as it's a major holiday in much of the world. So add one more week maybe.

    So, the unofficial upshot from my non-release-team-member analysis would be: A release with the fix should be out by January 15, and probably sooner.

  15. 50 remaining items

  16. MylesBorins commented on Feb 5, 2016

    @MylesBorins
    Contributor

    The fix is now in master, you should expect this to see it in a release in the next 2 - 3 weeks on v4 and v5.

  17. atom0s commented on Feb 6, 2016

    @atom0s

    Thanks for your efforts @thealphanerd it is greatly appreciated.

  18. MylesBorins commented on Feb 9, 2016

    @MylesBorins
    Contributor

    The fix is now released in v5.6.0. Expect LTS next week

  19. Smurf-IV commented on Feb 11, 2016

    @Smurf-IV

    Still broken in 4.3.0
    with the following code in WebStorm 11.03 debug

            var jsonData = jsonfile.readFileSync(fromFile);
            log.trace(jsonData);
    

    The trace (or info levels etc) is dumped, but the debug session is exited afterwards.

  20. atom0s commented on Feb 11, 2016

    @atom0s

    The comment just above yours mentioned already that it will be fixed at a later time for LTS.

  21. jasnell commented on Feb 11, 2016

    @jasnell
    Member

    Yes, v4.3.0 was a security fix that only included the fixes for the
    security issues. It bumped all other fixes to the next LTS release which
    we'll be working on soon.
    On Feb 11, 2016 1:35 AM, "atom0s" notifications@github.com wrote:

    The comment just above yours mentioned already that it will be fixed at a
    later time for LTS.

    —
    Reply to this email directly or view it on GitHub
    #4440 (comment).

  22. rainabba commented on Feb 17, 2016

    @rainabba
    Contributor

    This isn't TOP priority? #4382

  23. MylesBorins commented on Feb 17, 2016

    @MylesBorins
    Contributor

    As mentioned above 4.3.1 has been released with the fix for this bug!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    utilIssues and PRs related to the built-in util module.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions