diff --git a/runtime/vm/debugger.cc b/runtime/vm/debugger.cc index 2c4d54bf04c..83a53af1234 100644 --- a/runtime/vm/debugger.cc +++ b/runtime/vm/debugger.cc @@ -1251,6 +1251,7 @@ Debugger::Debugger() : isolate_(NULL), isolate_id_(ILLEGAL_ISOLATE_ID), initialized_(false), + creation_message_sent_(false), next_id_(1), latent_locations_(NULL), breakpoint_locations_(NULL), @@ -1299,8 +1300,11 @@ void Debugger::Shutdown() { bpt->Disable(); delete bpt; } - // Signal isolate shutdown event. - SignalIsolateEvent(DebuggerEvent::kIsolateShutdown); + // Signal isolate shutdown event, but only if we previously sent the creation + // event. + if (creation_message_sent_) { + SignalIsolateEvent(DebuggerEvent::kIsolateShutdown); + } } @@ -2809,8 +2813,10 @@ void Debugger::Initialize(Isolate* isolate) { void Debugger::NotifyIsolateCreated() { // Signal isolate creation event. - if (!ServiceIsolate::IsServiceIsolateDescendant(isolate_)) { + if ((isolate_ != Dart::vm_isolate()) && + !ServiceIsolate::IsServiceIsolateDescendant(isolate_)) { SignalIsolateEvent(DebuggerEvent::kIsolateCreated); + creation_message_sent_ = true; } } diff --git a/runtime/vm/debugger.h b/runtime/vm/debugger.h index b257a821043..aaa2b84e378 100644 --- a/runtime/vm/debugger.h +++ b/runtime/vm/debugger.h @@ -655,6 +655,7 @@ class Debugger { Isolate* isolate_; Dart_Port isolate_id_; // A unique ID for the isolate in the debugger. bool initialized_; + bool creation_message_sent_; // The creation message has been sent. // ID number generator. intptr_t next_id_;