diff --git a/src/api/environment.cc b/src/api/environment.cc index 0cbbe3fb048517..529929deb63524 100644 --- a/src/api/environment.cc +++ b/src/api/environment.cc @@ -375,12 +375,13 @@ Environment* CreateEnvironment( // options than the global parse call. Environment* env = new Environment( isolate_data, context, args, exec_args, nullptr, flags, thread_id); + #if HAVE_INSPECTOR if (env->should_create_inspector()) { if (inspector_parent_handle) { - env->InitializeInspector( - std::move(static_cast( - inspector_parent_handle.get())->impl)); + env->InitializeInspector(std::move( + static_cast(inspector_parent_handle.get()) + ->impl)); } else { env->InitializeInspector({}); } diff --git a/src/node_main_instance.cc b/src/node_main_instance.cc index 3e0167fdddea12..5060c69499f813 100644 --- a/src/node_main_instance.cc +++ b/src/node_main_instance.cc @@ -191,19 +191,8 @@ NodeMainInstance::CreateMainEnvironment(ExitCode* exit_code) { context = NewContext(isolate_); CHECK(!context.IsEmpty()); Context::Scope context_scope(context); - env.reset(new Environment(isolate_data_.get(), - context, - args_, - exec_args_, - nullptr, - EnvironmentFlags::kDefaultFlags, - {})); -#if HAVE_INSPECTOR - env->InitializeInspector({}); -#endif - if (env->principal_realm()->RunBootstrapping().IsEmpty()) { - return nullptr; - } + env.reset( + CreateEnvironment(isolate_data_.get(), context, args_, exec_args_)); } return env; diff --git a/src/node_snapshotable.cc b/src/node_snapshotable.cc index f775af6ef6db4b..8d296077db07ef 100644 --- a/src/node_snapshotable.cc +++ b/src/node_snapshotable.cc @@ -1151,16 +1151,21 @@ ExitCode SnapshotBuilder::Generate(SnapshotData* out, Context::Scope context_scope(main_context); // Create the environment. - env = new Environment(main_instance->isolate_data(), - main_context, - args, - exec_args, - nullptr, - node::EnvironmentFlags::kDefaultFlags, - {}); - - // Run scripts in lib/internal/bootstrap/ - if (env->principal_realm()->RunBootstrapping().IsEmpty()) { + // It's not guaranteed that a context that goes through + // v8_inspector::V8Inspector::contextCreated() is runtime-independent, + // so do not start the inspector on the main context when building + // the default snapshot. + uint64_t env_flags = EnvironmentFlags::kDefaultFlags | + EnvironmentFlags::kNoCreateInspector; + + env = CreateEnvironment(main_instance->isolate_data(), + main_context, + args, + exec_args, + static_cast(env_flags)); + + // This already ran scripts in lib/internal/bootstrap/, if it fails return + if (env == nullptr) { return ExitCode::kBootstrapFailure; } // If --build-snapshot is true, lib/internal/main/mksnapshot.js would be