Skip to content

inspector: crash on debugger connection if JS session is already active #16852

@ofrobots

Description

@ofrobots

Found this on googleapis/cloud-debug-nodejs#356 originally.

// Flags: --inspect=9229
const inspector = require('inspector');
const session = new inspector.Session();
session.connect();

setInterval(() => { console.log('jello')}, 2000);

setTimeout(() => {
  require('child_process').spawn(process.execPath, [
    'inspect',
    'localhost:9229'
  ])
}, 1000);

Crashes with:

$ ./node_g --inspect ~/tmp/test/test.js
Debugger listening on ws://127.0.0.1:9229/8c72c164-5fc4-41b9-af56-8a8c4cf95cb7
For help see https://nodejs.org/en/docs/inspector
jello
Debugger attached.
/Users/ofrobots/src/node/out/Debug/node[35110]: ../src/inspector_agent.cc:347:void node::inspector::NodeInspectorClient::connectFrontend(node::inspector::InspectorSessionDelegate *): Assertion `(channel_) == (nullptr)' failed.
 1: node::Abort() [/Users/ofrobots/src/node/./node_g]
 2: node::(anonymous namespace)::DomainEnter(node::Environment*, v8::Local<v8::Object>) [/Users/ofrobots/src/node/./node_g]
 3: node::inspector::NodeInspectorClient::connectFrontend(node::inspector::InspectorSessionDelegate*) [/Users/ofrobots/src/node/./node_g]
 4: node::inspector::Agent::Connect(node::inspector::InspectorSessionDelegate*) [/Users/ofrobots/src/node/./node_g]
 5: node::inspector::InspectorIo::DispatchMessages() [/Users/ofrobots/src/node/./node_g]
 6: node::inspector::DispatchMessagesTask::Run() [/Users/ofrobots/src/node/./node_g]
 7: node::RunForegroundTask(v8::Task*) [/Users/ofrobots/src/node/./node_g]
 8: node::NodePlatform::FlushForegroundTasksInternal() [/Users/ofrobots/src/node/./node_g]
 9: node::FlushTasks(uv_async_s*) [/Users/ofrobots/src/node/./node_g]
10: uv__async_io [/Users/ofrobots/src/node/./node_g]
11: uv__io_poll [/Users/ofrobots/src/node/./node_g]
12: uv_run [/Users/ofrobots/src/node/./node_g]
13: node::Start(v8::Isolate*, node::IsolateData*, int, char const* const*, int, char const* const*) [/Users/ofrobots/src/node/./node_g]
14: node::Start(uv_loop_s*, int, char const* const*, int, char const* const*) [/Users/ofrobots/src/node/./node_g]
15: node::Start(int, char**) [/Users/ofrobots/src/node/./node_g]
16: main [/Users/ofrobots/src/node/./node_g]
17: start [/Users/ofrobots/src/node/./node_g]
[1]    35110 abort      ./node_g --inspect ~/tmp/test/test.js

This affects master, 9.x and 8.x.

/cc @nodejs/v8-inspector

Metadata

Metadata

Assignees

Labels

inspectorIssues and PRs related to the V8 inspector protocol

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions