Repository navigation
Inspector does not initialize when using CreateEnvironment #31258
Copy link
Copy link
Closed as not planned
Labels
embeddingIssues and PRs related to embedding Node.js in another project.Issues and PRs related to embedding Node.js in another project.staleIssues and PRs marked stale due to inactivity and scheduled for automatic closure.Issues and PRs marked stale due to inactivity and scheduled for automatic closure.
Description
Inspector does not initialize when using CreateEnvironment.
So occur crash in the code below. (inspector_agent()->client_ is null)
Lines 79 to 80 in 1a552f6
inspector_parent_handle_ = env->inspector_agent()->GetParentHandle(thread_id_, url);
Line 1010 in 3e79c00
return client_->getWorkerManager()->NewParentHandle(thread_id, url);
Initialization takes place only here.
node/src/node_main_instance.cc
Lines 225 to 231 in 1a552f6
env->InitializeDiagnostics(); // TODO(joyeecheung): when we snapshot the bootstrapped context, // the inspector and diagnostics setup should after after deserialization. #if HAVE_INSPECTOR *exit_code = env->InitializeInspector({}); #endif
Environment* CreateEnvironment(IsolateData* isolate_data,
Local<Context> context,
int argc,
const char* const* argv,
int exec_argc,
const char* const* exec_argv) {
Isolate* isolate = context->GetIsolate();
HandleScope handle_scope(isolate);
Context::Scope context_scope(context);
// TODO(addaleax): This is a much better place for parsing per-Environment
// options than the global parse call.
std::vector<std::string> args(argv, argv + argc);
std::vector<std::string> exec_args(exec_argv, exec_argv + exec_argc);
// TODO(addaleax): Provide more sensible flags, in an embedder-accessible way.
Environment* env = new Environment(
isolate_data,
context,
args,
exec_args,
static_cast<Environment::Flags>(Environment::kIsMainThread |
Environment::kOwnsProcessState |
Environment::kOwnsInspector));
env->InitializeLibuv(per_process::v8_is_profiling);
// ========== START SUGGEST ==========
env->InitializeDiagnostics();
// TODO(joyeecheung): when we snapshot the bootstrapped context,
// the inspector and diagnostics setup should after after deserialization.
#if HAVE_INSPECTOR && NODE_USE_V8_PLATFORM
//TODO(jc-lab): If InitializeInspector fails, the caller must be informed of the return_code.
env->InitializeInspector(nullptr);
#endifI thought about the above suggestions.
However, the above proposal does not pass the EnvironmentTest.MultipleEnvironmentsPerIsolate test.
Line 770 in 1a552f6
| CHECK_EQ(start_io_thread_async_initialized.exchange(true), false); |
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
embeddingIssues and PRs related to embedding Node.js in another project.Issues and PRs related to embedding Node.js in another project.staleIssues and PRs marked stale due to inactivity and scheduled for automatic closure.Issues and PRs marked stale due to inactivity and scheduled for automatic closure.
Activity
addaleax commentedon Jan 9, 2020
#30467 should fix this but it’s been blocked for a while, it’s on the top of my TODO list but I haven’t quite gotten back to it yet.
github-actions commentedon Jun 27, 2026
This issue has been marked as stale due to 210 days of inactivity.
It will be automatically closed in 30 days if no further activity occurs. If this is still relevant, please leave a comment or update it to keep it open.
github-actions commentedon Jul 28, 2026
This issue has been automatically closed after 30 days of inactivity following its stale status (no activity for a total of 120 days).
If this is still relevant, feel free to reopen it or leave a comment with additional details so we can continue the discussion.