8043158: Crash in CodeSweeperSweepNoFlushTest in CompileQueue::free_all()
Acquire lock before calling notify()
Reviewed-by: twisti, thartmann
diff --git a/hotspot/src/share/vm/compiler/compileBroker.cpp b/hotspot/src/share/vm/compiler/compileBroker.cpp
index be98488..6edb5c5 100644
--- a/hotspot/src/share/vm/compiler/compileBroker.cpp
+++ b/hotspot/src/share/vm/compiler/compileBroker.cpp
@@ -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);
}