-
-
Notifications
You must be signed in to change notification settings - Fork 33.7k
Open
Labels
embeddingIssues and PRs related to embedding Node.js in another project.Issues and PRs related to embedding Node.js in another project.
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); |
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.