Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-2037081 | 1.4.0 | Coleen Phillimore | P4 | Closed | Fixed | beta |
The JCK test unbind_Unbind001 hangs when exiting on Solaris i486. The call
stack indicates that a set_thread call is made which causes a thread to
hold the malloc lock. The thread holding the lock gets interrupted by a gc
event, it appears. This causes the test to hang. It's intermittent - about
1 in every 20 times, and has been reproduced with a ladybird baseline,
product build, and on a lightly loaded 2 cpu system.
The interesting thread stacks are below. I'll attach an output file of the
dbx session which I've attached to the hanging application.
(dbx) where
current thread: t@21
=>[1] __lwp_sema_wait(0xd52f0d74), at 0xdfaeab46
[2] _park(), at 0xdfb893ad
[3] _swtch(), at 0xdfb891d3
[4] _dopreempt(), at 0xdfb8b366
[5] _sigsuspnd(), at 0xdfb8d863
[6] _siglwp(), at 0xdfb8d8a6
[7] __sighndlr(), at 0xdfb878bf
[8] sigacthandler(), at 0xdfb958db
---- called from signal handler with signal 33 (SIGLWP) ------
[9] _smalloc(), at 0xdfaf583e
[10] _malloc_unlocked(), at 0xdfaf5958
[11] realloc(), at 0xdfaf5a96
[12] pthread_setspecific(), at 0xdfb91fd6
[13] os::thread_local_storage_at_put(), at 0xdee2a2d9
[14] ThreadLocalStorage::set_thread(), at 0xdee5afa2
[15] Thread::initialize_thread_local_storage(), at 0xdee5690a
[16] JavaThread::run(), at 0xdee57bb3
[17] _start(), at 0xdee29905
and
(dbx) where t@17
current thread: t@17
=>[1] _swtch(0x0), at 0xdfb892ab
[2] _mutex_adaptive_lock(0x804e900), at 0xdfb8a682
[3] _cmutex_lock(0x804e900), at 0xdfb8a4ac
[4] Mutex::wait_for_lock_implementation(0x804e8d0), at 0xdee1ff5b
[5] Mutex::lock_without_safepoint_check(0x804e8d0), at 0xdee1fd28
[6] SafepointSynchronize::block(0x8156c70), at 0xdee398be
[7] ObjectMonitor::wait(0x80f4634), at 0xdee24d5b
[8] ObjectSynchronizer::wait(0x81535d0), at 0xdee448a9
[9] JVM_MonitorWait(0x8156cf4), at 0xdedeea43
[10] 0x8099ca3(0x0), at 0x8099ca2
[11] 0x8096fdc(0x0), at 0x8096fdb
[12] 0x8097094(0x0), at 0x8097093
[13] 0x80971a8(0xd5862ab8), at 0x80971a7
[14] 0xdefed2d6(0xd5430b64), at 0xdefed2d5
[15] JavaCalls::call_helper(0xd5430cdc), at 0xdedd6cd8
[16] os::os_exception_wrapper(0xdedd6b88), at 0xdee2b46f
[17] JavaCalls::call(0xd5430cdc), at 0xdedd6b7b
[18] JavaCalls::call_virtual(0xd5430cdc), at 0xdedd6514
[19] JavaCalls::call_virtual(0xd5430cdc), at 0xdedd6595
[20] thread_entry(0x8156c70), at 0xdedf555d
[21] JavaThread::thread_main_inner(0x8156c70), at 0xdee57c70
[22] JavaThread::run(0x8156c70), at 0xdee57c1b
[23] _start(0x8156c70), at 0xdee29905
(dbx) where t@1
current thread: t@1
=>[1] _swtch(0x0), at 0xdfb892ab
[2] cond_wait(0x804f4c8), at 0xdfb880ef
[3] Monitor::wait(0x804f480), at 0xdee20e76
[4] VMThread::execute(0x8046354), at 0xdee65f61
[5] os::exit(0x5f), at 0xdee2a527
[6] vm_exit(0x5f), at 0xdedd5c69
[7] JVM_Halt(0x5f), at 0xdedee315
[8] Java_java_lang_Shutdown_halt(0x80501fc), at 0xdf8edd84
[9] 0x8099ca3(0xd983c8a8), at 0x8099ca2
[10] 0x8096fdc(0x0), at 0x8096fdb
[11] 0x8096fdc(0xd58404b0), at 0x8096fdb
[12] 0x8096fdc(0x5f), at 0x8096fdb
[13] 0x8096fdc(0xd58099c8), at 0x8096fdb
[14] 0x8096fdc(0xd5840348), at 0x8096fdb
[15] 0xdefed2d6(0x8046534), at 0xdefed2d5
[16] JavaCalls::call_helper(0x8046698), at 0xdedd6cd8
[17] os::os_exception_wrapper(0xdedd6b88), at 0xdee2b46f
[18] JavaCalls::call(0x8046698), at 0xdedd6b7b
[19] jni_invoke(0x80501fc), at 0xdeddc35d
[20] jni_CallStaticVoidMethod(0x80501fc), at 0xdede4717
[21] main(0x4), at 0x8049a05
(dbx) where t@4
current thread: t@4
=>[1] __lwp_sema_wait(0xdf605d74), at 0xdfaeab46
[2] _park(), at 0xdfb893ad
[3] _swtch(), at 0xdfb88fe8
[4] _mutex_adaptive_lock(), at 0xdfb8a682
[5] _cmutex_lock(), at 0xdfb8a4ac
[6] SuspendThread_Callback::execute(), at 0xdee2c464
[7] suspend_thread_impl(), at 0xdee29f42
[8] os::suspend_thread(), at 0xdee29ff7
[9] os::suspend_thread_async(), at 0xdee2a019
[10] VM_Exit::doit(), at 0xdee2c3c9
[11] VM_Operation::evaluate(), at 0xdee663a5
[12] VMThread::evaluate_operation(), at 0xdee65b46
[13] VMThread::loop(), at 0xdee65d41
[14] VMThread::run(), at 0xdee659ce
[15] _start(), at 0xdee29905
stack indicates that a set_thread call is made which causes a thread to
hold the malloc lock. The thread holding the lock gets interrupted by a gc
event, it appears. This causes the test to hang. It's intermittent - about
1 in every 20 times, and has been reproduced with a ladybird baseline,
product build, and on a lightly loaded 2 cpu system.
The interesting thread stacks are below. I'll attach an output file of the
dbx session which I've attached to the hanging application.
(dbx) where
current thread: t@21
=>[1] __lwp_sema_wait(0xd52f0d74), at 0xdfaeab46
[2] _park(), at 0xdfb893ad
[3] _swtch(), at 0xdfb891d3
[4] _dopreempt(), at 0xdfb8b366
[5] _sigsuspnd(), at 0xdfb8d863
[6] _siglwp(), at 0xdfb8d8a6
[7] __sighndlr(), at 0xdfb878bf
[8] sigacthandler(), at 0xdfb958db
---- called from signal handler with signal 33 (SIGLWP) ------
[9] _smalloc(), at 0xdfaf583e
[10] _malloc_unlocked(), at 0xdfaf5958
[11] realloc(), at 0xdfaf5a96
[12] pthread_setspecific(), at 0xdfb91fd6
[13] os::thread_local_storage_at_put(), at 0xdee2a2d9
[14] ThreadLocalStorage::set_thread(), at 0xdee5afa2
[15] Thread::initialize_thread_local_storage(), at 0xdee5690a
[16] JavaThread::run(), at 0xdee57bb3
[17] _start(), at 0xdee29905
and
(dbx) where t@17
current thread: t@17
=>[1] _swtch(0x0), at 0xdfb892ab
[2] _mutex_adaptive_lock(0x804e900), at 0xdfb8a682
[3] _cmutex_lock(0x804e900), at 0xdfb8a4ac
[4] Mutex::wait_for_lock_implementation(0x804e8d0), at 0xdee1ff5b
[5] Mutex::lock_without_safepoint_check(0x804e8d0), at 0xdee1fd28
[6] SafepointSynchronize::block(0x8156c70), at 0xdee398be
[7] ObjectMonitor::wait(0x80f4634), at 0xdee24d5b
[8] ObjectSynchronizer::wait(0x81535d0), at 0xdee448a9
[9] JVM_MonitorWait(0x8156cf4), at 0xdedeea43
[10] 0x8099ca3(0x0), at 0x8099ca2
[11] 0x8096fdc(0x0), at 0x8096fdb
[12] 0x8097094(0x0), at 0x8097093
[13] 0x80971a8(0xd5862ab8), at 0x80971a7
[14] 0xdefed2d6(0xd5430b64), at 0xdefed2d5
[15] JavaCalls::call_helper(0xd5430cdc), at 0xdedd6cd8
[16] os::os_exception_wrapper(0xdedd6b88), at 0xdee2b46f
[17] JavaCalls::call(0xd5430cdc), at 0xdedd6b7b
[18] JavaCalls::call_virtual(0xd5430cdc), at 0xdedd6514
[19] JavaCalls::call_virtual(0xd5430cdc), at 0xdedd6595
[20] thread_entry(0x8156c70), at 0xdedf555d
[21] JavaThread::thread_main_inner(0x8156c70), at 0xdee57c70
[22] JavaThread::run(0x8156c70), at 0xdee57c1b
[23] _start(0x8156c70), at 0xdee29905
(dbx) where t@1
current thread: t@1
=>[1] _swtch(0x0), at 0xdfb892ab
[2] cond_wait(0x804f4c8), at 0xdfb880ef
[3] Monitor::wait(0x804f480), at 0xdee20e76
[4] VMThread::execute(0x8046354), at 0xdee65f61
[5] os::exit(0x5f), at 0xdee2a527
[6] vm_exit(0x5f), at 0xdedd5c69
[7] JVM_Halt(0x5f), at 0xdedee315
[8] Java_java_lang_Shutdown_halt(0x80501fc), at 0xdf8edd84
[9] 0x8099ca3(0xd983c8a8), at 0x8099ca2
[10] 0x8096fdc(0x0), at 0x8096fdb
[11] 0x8096fdc(0xd58404b0), at 0x8096fdb
[12] 0x8096fdc(0x5f), at 0x8096fdb
[13] 0x8096fdc(0xd58099c8), at 0x8096fdb
[14] 0x8096fdc(0xd5840348), at 0x8096fdb
[15] 0xdefed2d6(0x8046534), at 0xdefed2d5
[16] JavaCalls::call_helper(0x8046698), at 0xdedd6cd8
[17] os::os_exception_wrapper(0xdedd6b88), at 0xdee2b46f
[18] JavaCalls::call(0x8046698), at 0xdedd6b7b
[19] jni_invoke(0x80501fc), at 0xdeddc35d
[20] jni_CallStaticVoidMethod(0x80501fc), at 0xdede4717
[21] main(0x4), at 0x8049a05
(dbx) where t@4
current thread: t@4
=>[1] __lwp_sema_wait(0xdf605d74), at 0xdfaeab46
[2] _park(), at 0xdfb893ad
[3] _swtch(), at 0xdfb88fe8
[4] _mutex_adaptive_lock(), at 0xdfb8a682
[5] _cmutex_lock(), at 0xdfb8a4ac
[6] SuspendThread_Callback::execute(), at 0xdee2c464
[7] suspend_thread_impl(), at 0xdee29f42
[8] os::suspend_thread(), at 0xdee29ff7
[9] os::suspend_thread_async(), at 0xdee2a019
[10] VM_Exit::doit(), at 0xdee2c3c9
[11] VM_Operation::evaluate(), at 0xdee663a5
[12] VMThread::evaluate_operation(), at 0xdee65b46
[13] VMThread::loop(), at 0xdee65d41
[14] VMThread::run(), at 0xdee659ce
[15] _start(), at 0xdee29905
- backported by
-
JDK-2037081 jck test unbind_Unbind001 hangs when exiting in solaris i486 on set_thread
-
- Closed
-
- relates to
-
JDK-4383861 assert "can only start thread in INITIALIZED state"
-
- Closed
-