diff --git a/src/env-inl.h b/src/env-inl.h index 62dc6e1191bcec..e6e189be3dcbab 100644 --- a/src/env-inl.h +++ b/src/env-inl.h @@ -306,7 +306,7 @@ inline Environment::Environment(IsolateData* isolate_data, emit_napi_warning_(true), makecallback_cntr_(0), #if HAVE_INSPECTOR - inspector_agent_(this), + inspector_agent_(new inspector::Agent(this)), #endif handle_cleanup_waiting_(0), http_parser_buffer_(nullptr), @@ -347,6 +347,11 @@ inline Environment::Environment(IsolateData* isolate_data, inline Environment::~Environment() { v8::HandleScope handle_scope(isolate()); +#if HAVE_INSPECTOR + // Destroy inspector agent before erasing the context. + delete inspector_agent_; +#endif + context()->SetAlignedPointerInEmbedderData(kContextEmbedderDataIndex, nullptr); #define V(PropertyName, TypeName) PropertyName ## _.Reset(); diff --git a/src/env.h b/src/env.h index a1ec05baf0f4fe..c4156a405f69c5 100644 --- a/src/env.h +++ b/src/env.h @@ -667,8 +667,8 @@ class Environment { #undef V #if HAVE_INSPECTOR - inline inspector::Agent* inspector_agent() { - return &inspector_agent_; + inline inspector::Agent* inspector_agent() const { + return inspector_agent_; } #endif @@ -713,7 +713,7 @@ class Environment { std::map performance_marks_; #if HAVE_INSPECTOR - inspector::Agent inspector_agent_; + inspector::Agent* const inspector_agent_; #endif HandleWrapQueue handle_wrap_queue_;