RFR(XS) 8055236: Deadlock during NMT2 shutdown on Windows
Zhengyu Gu
zhengyu.gu at oracle.com
Wed Aug 20 20:25:13 UTC 2014
Hi Dan,
Before NMT2, MemTracker::shutdown() only sets flag that signals a
pending shutdown request, there is no lock taken. Upon seeing the
shutdown pending flag, NMT worker thread actually does the real cleanup
work.
Thanks,
-Zhengyu
On 8/20/2014 4:04 PM, Daniel D. Daugherty wrote:
> On 8/20/14 7:21 AM, Zhengyu Gu wrote:
>> The problem is caused by acquiring locks inside
>> MemTracker::shutdown(), which could be held by threads that have been
>> already killed.
>>
>> Given the MemTracker::shutdown() call is on JVM exiting path, the
>> call is not necessary, should be removed.
>>
>>
>> Bug: https://bugs.openjdk.java.net/browse/JDK-8055236
>> Webrev: http://cr.openjdk.java.net/~zgu/8055236/webrev.00/
>> <http://cr.openjdk.java.net/%7Ezgu/8055236/webrev.00/>
>
> src/os/windows/vm/os_windows.cpp
> No comments.
>
> I have no issues with removing the work around code, but there is
> no analysis here or in the bug report that explains why this work
> around is no longer necessary. There's also no explanation about
> why this deadlock is seen now and why it wasn't seen before NMT2.
>
> I'll hold off on a thumbs up until I see some reasonable analysis.
>
> Dan
>
>
>>
>>
>> Test:
>> Tested on Windows x64 with following tests:
>> nsk/jvmti/scenarios/allocation
>> runtime/ParallelClassLoading
>>
>>
>> Thanks,
>>
>> -Zhengyu
>>
>
More information about the hotspot-runtime-dev
mailing list