100% CPU usage in "VM Thread" for Hotspot 10/11 on x64 platform within data processing application
David Sitsky
sits at nuix.com
Wed Feb 18 16:29:13 PST 2009
I apologise in advance if this is a "breach of protocol". I have
submitted a bug through the usual channels, but my experience with this
approach unfortunately has usually been a dead-end.
I have a very intensive data application (I/O + CPU + memory) on the
Windows platform that reliably causes a 100% CPU lockup, but only for
the x64 distribution (jdk 1.6.0_07, 1.6.0_10 and 1.6.0_12). When using
the x32 distribution on the same machines it works fine. It is not
machine-specific - I have seen this across 7 different machines, and it
seems to occur after a few to several hours of processing. The JVM is
still responsive, but extremely slow.
Using process explorer, I was able to find the thread in the process
consuming all the CPU. The stack traces from procexp have the same
thread ID as the "VM Thread" from jstack. The stacks are usually
something like the following:
ntoskrnl.exe!ExpInterlockedFlushSList+0x126f
ntoskrnl.exe!RtlNumberOfClearBits+0x5cc
ntoskrnl.exe!ExpInterlockedFlushSList+0x134d
ntoskrnl.exe!IoAcquireCancelSpinLock+0x163
jvm.dll!AsyncGetCallTrace+0x3ac7f
jvm.dll!JVM_FindSignal+0xe4533
jvm.dll!JVM_FindSignal+0x10fa2e
jvm.dll!JVM_FindSignal+0xe3eef
jvm.dll!JVM_FindSignal+0x14d61d
jvm.dll!JVM_FindSignal+0x14dabc
jvm.dll!JVM_FindSignal+0x1593e0
jvm.dll!JVM_FindSignal+0x12a374
jvm.dll!JVM_FindSignal+0x2167d3
jvm.dll!JVM_FindSignal+0x2193e8
jvm.dll!JVM_FindSignal+0x218274
jvm.dll!JVM_FindSignal+0x2186ca
jvm.dll!JVM_FindSignal+0x218cd2
jvm.dll!JVM_FindSignal+0x11d7f9
msvcrt.dll!free_dbg+0x147
msvcrt.dll!beginthreadex+0x131
kernel32.dll!BaseThreadInitThunk+0xd
ntdll.dll!RtlUserThreadStart+0x21
or
ntoskrnl.exe!ExpInterlockedFlushSList+0x126f
ntoskrnl.exe!KeWaitForMultipleObjects+0xcca
ntoskrnl.exe!KeWaitForMutexObject+0x2da
ntoskrnl.exe!_misaligned_access+0x35
ntoskrnl.exe!MmUnlockPages+0x1160
ntoskrnl.exe!IoAcquireCancelSpinLock+0x163
jvm.dll!AsyncGetCallTrace+0x3ac7f
jvm.dll!JVM_FindSignal+0xe3eef
jvm.dll!JVM_FindSignal+0x14d61d
jvm.dll!JVM_FindSignal+0x14dabc
jvm.dll!JVM_FindSignal+0x1593e0
jvm.dll!JVM_FindSignal+0x12a374
jvm.dll!JVM_FindSignal+0x2167d3
jvm.dll!JVM_FindSignal+0x2193e8
jvm.dll!JVM_FindSignal+0x218274
jvm.dll!JVM_FindSignal+0x2186ca
jvm.dll!JVM_FindSignal+0x218cd2
jvm.dll!JVM_FindSignal+0x11d7f9
msvcrt.dll!free_dbg+0x147
msvcrt.dll!beginthreadex+0x131
kernel32.dll!BaseThreadInitThunk+0xd
ntdll.dll!RtlUserThreadStart+0x21
or (without AsyncGetCallTrace):
ntoskrnl.exe!ExpInterlockedFlushSList+0x14a0
ntoskrnl.exe!IoAcquireCancelSpinLock+0x163
jvm.dll!JVM_EnqueueOperation+0xb19f4
jvm.dll!JVM_FindSignal+0x1b7fcc
jvm.dll!JVM_FindSignal+0x14dcca
jvm.dll!JVM_FindSignal+0x14e17c
jvm.dll!JVM_FindSignal+0x159b80
jvm.dll!JVM_FindSignal+0x12a5e4
jvm.dll!JVM_FindSignal+0x216e53
jvm.dll!JVM_FindSignal+0x219a38
jvm.dll!JVM_FindSignal+0x2188d4
jvm.dll!JVM_FindSignal+0x218d2a
jvm.dll!JVM_FindSignal+0x219332
jvm.dll!JVM_FindSignal+0x11da99
msvcrt.dll!free_dbg+0x147
msvcrt.dll!beginthreadex+0x131
kernel32.dll!BaseThreadInitThunk+0xd
ntdll.dll!RtlUserThreadStart+0x21
I am more than happy to run test/debug versions in order to assist in
tracking this down. I wish I could say, here is a unit test, but its a
very complex application with complex data processing. The only good
news is it seems to be quite reproduceable on our systems.
Apologies again in advance if this was an inappropriate place to post.
But given the severity of this issue, I am hoping somebody here will be
interested in it..
--
Cheers,
David
Nuix Pty Ltd
Suite 79, 89 Jones St, Ultimo NSW 2007, Australia Ph: +61 2 9280 0699
Web: http://www.nuix.com Fax: +61 2 9212 6902
More information about the hotspot-dev
mailing list