ith JDK 1.6_21 in solaris. Customer have a scheduler process which triggers multiple processes using processbuilder. After running for sometime the jvm hangs on the native process (Deadlock at the native not at the thread level). The stack looks like:
Thread t@18893 is holding 'malloc_lock' and is waiting for 'mutex_lock'.
Thread t@18885 is holding 'mutex_lock' and is waiting for 'malloc_lock'.
t@18893 (l@18893) stopped in __lwp_park at 0xffffffff7edd6254
0xffffffff7edd6254: __lwp_park+0x0010: ta %icc,0x0000000000000040
current thread: t@18893
=>[1] __lwp_park(0x0, 0x0, 0x0, 0x2, 0xffffffff7f7701e0, 0xffffffff7f40b200), at 0xffffffff7edd6254
[2] mutex_lock_queue(0xffffffff7f40b200, 0x0, 0xffffffff7ef49d08, 0x0, 0xffffffff7ef49d00, 0x1), at 0xffffffff7edcdbd8
[3] _atexit(0xffffffff7e498258, 0xffffffff7ef007c0, 0x1f07bc, 0x0, 0x0, 0xffffffff7f40b200), at 0xffffffff7ed4b8bc
[4] __Crun::register_exit_code(0xffffffff7e498258, 0x50, 0xffffffff7e72c000, 0x6c180, 0xffffffff7e7981f8, 0x293c00),
at 0xffffffff7d807c3c
[5] VMError::report_and_die(0xffffffff4ecfce08, 0x1, 0x77400, 0xffffffff7ed61aa0, 0xffffffff7e7a3650,
0xffffffff7e72c000), at 0xffffffff7e497318
[6] JVM_handle_solaris_signal(0xa, 0xffffffff4ecfd4e0, 0xffffffff4ecfd200, 0x1a1400, 0x10189a800, 0x287800), at
0xffffffff7de06ec0
[7] __sighndlr(0xa, 0xffffffff4ecfd4e0, 0xffffffff4ecfd200, 0xffffffff7de06420, 0x0, 0x9), at 0xffffffff7edd62e0
---- called from signal handler with signal 10 (SIGBUS) ------
[8] _malloc_unlocked(0x80, 0x0, 0x100e1fab0, 0x0, 0x0, 0x0), at 0xffffffff7ed61aa0
[9] malloc(0x78, 0x2360, 0x1da750, 0xffffffff7edcedf0, 0xffffffff7ef3c000, 0x2000), at 0xffffffff7ed61900
[10] os::malloc(0x78, 0x2360, 0x1da750, 0x9a68f4, 0xffffffff7e72c000, 0x2000), at 0xffffffff7dd85728
[11] CHeapObj::operator new(0x78, 0x10188d000, 0x101726fe0, 0xffffffff7e72c000, 0x98e9ec, 0x101316eb0), at
0xffffffff7dd9d628 [ ... ]
[38] java_start(0x10189a800, 0x4a34, 0xffffffff7e797914, 0xffffffff7e72c000, 0xffffffff7e5889ff, 0xffffffff7e7afdcc),
at 0xffffffff7e362ba8
dbx> thread -blockedby
Thread t@18893 is blocked by:
__uberdata+0x1c00 (0xffffffff7ef49d00): thread mutex(locked) Lock owned by t@18885
dbx>
dbx> where
current thread: t@18885
=>[1] __lwp_park(0x0, 0x0, 0x0, 0xca, 0xffffffff7f770160, 0xffffffff4f505200), at 0xffffffff7edd6254
[2] mutex_lock_queue(0xffffffff4f505200, 0x0, 0xffffffff7ef433c0, 0x0, 0xffffffff7ef433b8, 0x1), at 0xffffffff7edcdbd8
[3] _prefork_handler(0x1d48, 0xffffffff7ef48100, 0x1c00, 0x0, 0xffffffff7ef48160, 0x0), at 0xffffffff7ed4bea0
[4] _fork1(0x0, 0x1f6, 0xffffffff4ccfea58, 0xffffffff4f505200, 0x0, 0xffffffff7ef48160), at 0xffffffff7edc75c4
[5] Java_java_lang_UNIXProcess_forkAndExec(0x1019c19c8, 0xffffffff4ccfedf0, 0x1015604d0, 0xffffffff4ccfede0, 0x3,
0x0), at 0xffffffff7c22069c [ ... ]
[20] java_start(0x1019c1800, 0x4a34, 0xffffffff7e797914, 0xffffffff7e72c000, 0xffffffff7e5889ff, 0xffffffff7e7afdcc),
at 0xffffffff7e362ba8
dbx> thread -blockedby
Thread t@18885 is blocked by:
libc_malloc_lock (0xffffffff7ef433b8): thread mutex(locked) Lock owned by t@18893
dbx>
Thread t@18893 is holding 'malloc_lock' and is waiting for 'mutex_lock'.
Thread t@18885 is holding 'mutex_lock' and is waiting for 'malloc_lock'.
t@18893 (l@18893) stopped in __lwp_park at 0xffffffff7edd6254
0xffffffff7edd6254: __lwp_park+0x0010: ta %icc,0x0000000000000040
current thread: t@18893
=>[1] __lwp_park(0x0, 0x0, 0x0, 0x2, 0xffffffff7f7701e0, 0xffffffff7f40b200), at 0xffffffff7edd6254
[2] mutex_lock_queue(0xffffffff7f40b200, 0x0, 0xffffffff7ef49d08, 0x0, 0xffffffff7ef49d00, 0x1), at 0xffffffff7edcdbd8
[3] _atexit(0xffffffff7e498258, 0xffffffff7ef007c0, 0x1f07bc, 0x0, 0x0, 0xffffffff7f40b200), at 0xffffffff7ed4b8bc
[4] __Crun::register_exit_code(0xffffffff7e498258, 0x50, 0xffffffff7e72c000, 0x6c180, 0xffffffff7e7981f8, 0x293c00),
at 0xffffffff7d807c3c
[5] VMError::report_and_die(0xffffffff4ecfce08, 0x1, 0x77400, 0xffffffff7ed61aa0, 0xffffffff7e7a3650,
0xffffffff7e72c000), at 0xffffffff7e497318
[6] JVM_handle_solaris_signal(0xa, 0xffffffff4ecfd4e0, 0xffffffff4ecfd200, 0x1a1400, 0x10189a800, 0x287800), at
0xffffffff7de06ec0
[7] __sighndlr(0xa, 0xffffffff4ecfd4e0, 0xffffffff4ecfd200, 0xffffffff7de06420, 0x0, 0x9), at 0xffffffff7edd62e0
---- called from signal handler with signal 10 (SIGBUS) ------
[8] _malloc_unlocked(0x80, 0x0, 0x100e1fab0, 0x0, 0x0, 0x0), at 0xffffffff7ed61aa0
[9] malloc(0x78, 0x2360, 0x1da750, 0xffffffff7edcedf0, 0xffffffff7ef3c000, 0x2000), at 0xffffffff7ed61900
[10] os::malloc(0x78, 0x2360, 0x1da750, 0x9a68f4, 0xffffffff7e72c000, 0x2000), at 0xffffffff7dd85728
[11] CHeapObj::operator new(0x78, 0x10188d000, 0x101726fe0, 0xffffffff7e72c000, 0x98e9ec, 0x101316eb0), at
0xffffffff7dd9d628 [ ... ]
[38] java_start(0x10189a800, 0x4a34, 0xffffffff7e797914, 0xffffffff7e72c000, 0xffffffff7e5889ff, 0xffffffff7e7afdcc),
at 0xffffffff7e362ba8
dbx> thread -blockedby
Thread t@18893 is blocked by:
__uberdata+0x1c00 (0xffffffff7ef49d00): thread mutex(locked) Lock owned by t@18885
dbx>
dbx> where
current thread: t@18885
=>[1] __lwp_park(0x0, 0x0, 0x0, 0xca, 0xffffffff7f770160, 0xffffffff4f505200), at 0xffffffff7edd6254
[2] mutex_lock_queue(0xffffffff4f505200, 0x0, 0xffffffff7ef433c0, 0x0, 0xffffffff7ef433b8, 0x1), at 0xffffffff7edcdbd8
[3] _prefork_handler(0x1d48, 0xffffffff7ef48100, 0x1c00, 0x0, 0xffffffff7ef48160, 0x0), at 0xffffffff7ed4bea0
[4] _fork1(0x0, 0x1f6, 0xffffffff4ccfea58, 0xffffffff4f505200, 0x0, 0xffffffff7ef48160), at 0xffffffff7edc75c4
[5] Java_java_lang_UNIXProcess_forkAndExec(0x1019c19c8, 0xffffffff4ccfedf0, 0x1015604d0, 0xffffffff4ccfede0, 0x3,
0x0), at 0xffffffff7c22069c [ ... ]
[20] java_start(0x1019c1800, 0x4a34, 0xffffffff7e797914, 0xffffffff7e72c000, 0xffffffff7e5889ff, 0xffffffff7e7afdcc),
at 0xffffffff7e362ba8
dbx> thread -blockedby
Thread t@18885 is blocked by:
libc_malloc_lock (0xffffffff7ef433b8): thread mutex(locked) Lock owned by t@18893
dbx>