Index: runtime/vm/thread.cc |
diff --git a/runtime/vm/thread.cc b/runtime/vm/thread.cc |
index 9345b645a8644effe83be23ea6f75bb05bd72b0b..3b3eb3308d30b292147168449f670ba1f62033f5 100644 |
--- a/runtime/vm/thread.cc |
+++ b/runtime/vm/thread.cc |
@@ -134,8 +134,11 @@ void Thread::EnterIsolate(Isolate* isolate) { |
ASSERT(thread->thread_state() == NULL); |
InterruptableThreadState* thread_state = |
ThreadInterrupter::GetCurrentThreadState(); |
- // TODO(koda): Calling Isolate::CheckForDuplicateThreadState(thread_state) |
- // here can lead to deadlock. Evaluate doing this check some other way. |
+#if defined(DEBUG) |
+ thread->set_thread_state(NULL); // Exclude thread itself from the dupe check. |
+ Isolate::CheckForDuplicateThreadState(thread_state); |
+ thread->set_thread_state(thread_state); |
+#endif |
ASSERT(thread_state != NULL); |
// TODO(koda): Migrate profiler interface to use Thread. |
Profiler::BeginExecution(isolate); |