On 4/02/2015 5:00 AM, Carsten Varming wrote:
Greetings all,

I was recently introduced to the deadlock described in JDK-8047720 and
fixed in JDK9. The fix seems a little messy to me, and it looks like it
left some very short races in the code. So I decided to clean up the
code. See attached diff.

The change takes a step back and acquires PeriodicTask_lock in
WatcherThread::stop (like before the fix in JDK9), but this time
safepoints are allowed to proceed when acquiring PeriodicTask_lock,
preventing the deadlock.

It isn't obvious that blocking for a safepoint whilst in this method will always be a safe thing to do. That would need to be examined in detail - potential interactions can be very subtle.

David

Let me know what you think,
Carsten

Reply via email to