changeset 6847:28051f14c328

8043158: Crash in CodeSweeperSweepNoFlushTest in CompileQueue::free_all() Summary: Acquire lock before calling notify() Reviewed-by: twisti, thartmann
author anoll
date Fri, 20 Jun 2014 09:25:13 +0200
parents c47fcf523fff
children e903867b97e6
files src/share/vm/compiler/compileBroker.cpp
diffstat 1 files changed, 5 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/share/vm/compiler/compileBroker.cpp	Tue May 06 09:52:38 2014 +0200
+++ b/src/share/vm/compiler/compileBroker.cpp	Fri Jun 20 09:25:13 2014 +0200
@@ -678,8 +678,11 @@
   while (next != NULL) {
     CompileTask* current = next;
     next = current->next();
-    // Wake up thread that blocks on the compile task.
-    current->lock()->notify();
+    {
+      // Wake up thread that blocks on the compile task.
+      MutexLocker ct_lock(current->lock());
+      current->lock()->notify();
+    }
     // Put the task back on the freelist.
     CompileTask::free(current);
   }