Inspector does not initialize when using CreateEnvironment.
So occur crash in the code below. (inspector_agent()->client_ is null)
|
inspector_parent_handle_ = |
|
env->inspector_agent()->GetParentHandle(thread_id_, url); |
|
return client_->getWorkerManager()->NewParentHandle(thread_id, url); |
Initialization takes place only here.
|
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);
#endif
I thought about the above suggestions.
However, the above proposal does not pass the EnvironmentTest.MultipleEnvironmentsPerIsolate test.
|
CHECK_EQ(start_io_thread_async_initialized.exchange(true), false); |
Inspector does not initialize when using CreateEnvironment.
So occur crash in the code below. (inspector_agent()->client_ is null)
Initialization takes place only here.
I thought about the above suggestions.
However, the above proposal does not pass the EnvironmentTest.MultipleEnvironmentsPerIsolate test.
node/src/inspector_agent.cc
Line 770 in 1a552f6