debug version failed with -XX:+PrintMallocFree

David Holmes david.holmes at oracle.com
Tue Apr 9 18:03:49 PDT 2013


Hi Yumin,

This is a known issue with debug builds and some of the print/trace 
options. The more common one is you get recursive use of the low-level 
locking code that is not intended for recursive use. It is pretty much a 
"will not fix".

The stack below seems somewhat different, it looks like we're in the 
process of destroying the current thread when the debug println is 
executed, which tries to acquire a lock, which requires the current 
thread to be in a valid state, but it isn't. Not certain of the exact 
details for this case, so this case might be fixable.

A lot of our debug/tracing code is naive. It can get invoked from 
arbitrary places and arbitrary times and attempt to perform actions that 
are simply not possible from the current context.

David

On 10/04/2013 9:53 AM, Yumin Qi wrote:
> Hi,
>
>    Current build failed with
>    java -XX:+PrintMallocFree -version
>
> # To suppress the following error report, specify this argument
> # after -XX: or in .hotspotrc:  SuppressErrorAt=/mutex.cpp:454
> #
> # A fatal error has been detected by the Java Runtime Environment:
> #
> #  Internal Error
> (/HUDSON/workspace/2-build-linux-i586/jdk8/3881/hotspot/src/share/vm/runtime/mutex.cpp:454),
> pid=19793, tid=3820346224
> #  assert(_OnDeck != Self->_MutexEvent) failed: invariant
> #
> # JRE version: Java(TM) SE Runtime Environment (8.0-b84) (build
> 1.8.0-ea-fastdebug-b84)
> # Java VM: Java HotSpot(TM) Client VM (25.0-b25-fastdebug mixed mode
> linux-x86 )
> # Failed to write core dump. Core dumps have been disabled. To enable
> core dumping, try "ulimit -c unlimited" before starting Java again
> #
> # An error report file with more information is saved as:
>
>
>      stack trace:
>
> Native frames: (J=compiled Java code, j=interpreted, Vv=VM code,
> C=native code)
> V  [libjvm.so+0x7f7bf4]  VMError::report_and_die()+0x1a4
> V  [libjvm.so+0x312058]  report_vm_error(char const*, int, char const*,
> char const*)+0x68
> V  [libjvm.so+0x7f7a2a]  VMError::report(outputStream*)+0x178a
> V  [libjvm.so+0x7f7bf4]  VMError::report_and_die()+0x1a4
> V  [libjvm.so+0x312058]  report_vm_error(char const*, int, char const*,
> char const*)+0x68
> V  [libjvm.so+0x63afd7]  Monitor::ILock(Thread*)+0x347
> V  [libjvm.so+0x63b6ba] Monitor::lock_without_safepoint_check()+0x3a
> V  [libjvm.so+0x68863a]  defaultStream::hold(int)+0xca
> V  [libjvm.so+0x688709]  defaultStream::write(char const*, unsigned
> int)+0x29
> V  [libjvm.so+0x68558a]  outputStream::print_cr(char const*, ...)+0x3a
> V  [libjvm.so+0xcb585]  Arena::operator delete(void*)+0x25
> V  [libjvm.so+0x7a059a]  Thread::~Thread()+0x1ca
> V  [libjvm.so+0x7a0a95]  JavaThread::~JavaThread()+0x2f5
> V  [libjvm.so+0x7a78ed]  JavaThread::thread_main_inner()+0x8d
> V  [libjvm.so+0x7a7d16]  JavaThread::run()+0x256
> V  [libjvm.so+0x67e599]  java_start(Thread*)+0x119
> C  [libpthread.so.0+0x6a49]  abort@@GLIBC_2.0+0x6a49
>
> Think it is a potential bug. Should I file a bug?
>
> Thanks
> Yumin


More information about the hotspot-runtime-dev mailing list