JDK-7009149 : Hang on class loading/initialization involving GC locker
  • Type: Bug
  • Component: hotspot
  • Sub-Component: gc
  • Affected Version: hs20
  • Priority: P2
  • Status: Closed
  • Resolution: Duplicate
  • OS: generic
  • CPU: generic
  • Submitted: 2010-12-27
  • Updated: 2012-02-01
  • Resolved: 2010-12-29
Related Reports
Duplicate :  
Relates :  
Description
Stress test loading and initializing classes intermittenly hangs with stack trace below.

-----------------  lwp# 17 / thread# 17  --------------------
 feecac65 lwp_cond_wait (81ff248, 81ff230, 0, 0)
 fe9ab82d void os::PlatformEvent::park() (81ff200, febe44a6, 81fe000, fe975001) + bd
 fe9752a3 int Monitor::IWait(Thread*,long long) (80655e0, 81fe000, 0, 0) + 2b3
 fe9783a7 bool Monitor::wait(bool,long,bool) (80655e0, 0, 0, 0) + 11f
 fe68f2ab void GC_locker::stall_until_clear() (a4, 1a, 0, 158, b6a3152b, 0) + 10f
 fe0fb1f8 HeapWord*ParallelScavengeHeap::permanent_mem_allocate(unsigned) (8069678, 1a, febe8ee1, febe8e7c) + d0
 fe1df9f1 methodDataOopDesc*methodDataKlass::allocate(methodHandle,Thread*) (b6a00e58, 81fe9cc, 81fe000, 81fe9cc, 8065b28, fec6e000) + 75
 fe1df978 methodDataOopDesc*oopFactory::new_methodData(methodHandle,Thread*) (81fe9cc, 81fe000, fdc6cba8, fecbdb70) + 20
 fe1cdf22 void methodOopDesc::build_interpreter_method_data(methodHandle,Thread*) (81fe9cc, 81fe000, fdc6cbe8, fe1e0a31) + 3a
 fe1e0b70 int InterpreterRuntime::profile_method(JavaThread*,unsigned char*) (81fe000, b6a31528) + 150
 fac092b0 * java/lang/ref/Reference.access$200()Ljava/lang/ref/Reference;+0
 fac02fa7 * java/lang/ref/Reference$ReferenceHandler.run()V+12 (line 252)
 fac003de * StubRoutines (1)
 fe15f8e6 void JavaCalls::call_helper(JavaValue*,methodHandle*,JavaCallArguments*,Thread*) (fdc6cec0, fdc6cdd8, fdc6cde0, 81fe000, fdc6ce30, 81fe9b8) + 53e
 fe15fca4 void os::os_exception_wrapper(void(*)(JavaValue*,methodHandle*,JavaCallArguments*,Thread*),JavaValue*,methodHandle*,JavaCallArguments*,Thread*) (fe15f3a8, fdc6cec0, fdc
6cdd8, fdc6cde0, 81fe000, 81fe000) + 18
 fe220400 void JavaCalls::call_virtual(JavaValue*,Handle,KlassHandle,symbolHandle,symbolHandle,Thread*) (fdc6cec0, 81fe9b8, 81fe9bc, fecd0bd4, fecd0f0c) + 110
 fe23d06e void thread_entry(JavaThread*,Thread*) (81fe000) + e2
 fe237a23 void JavaThread::run() (81fe000, feccc500, 0, fe9a0f82) + 2ff
 fe9a13f4 java_start (81fe000) + 4c8
 feec71d0 _thr_setup (fde47a00) + 4e
 feec74c0 _lwp_start (fde47a00, 0, 0, fdc6cff8, feec74c0, fde47a00)
-----------------  lwp# 26 / thread# 26  --------------------
 feecac65 lwp_cond_wait (8232a48, 8232a30, 0, 0)
 fe9ab82d void os::PlatformEvent::park() (8232a00, 82003e8, b5729170, 1) + bd
 fe149d7e void ObjectMonitor::enter(Thread*) (82003cc, 8232400, 8232400, fea87ad9) + 59a
 fea87bd3 void ObjectSynchronizer::fast_enter(Handle,BasicLock*,bool,Thread*) (823474c, b5bc74f8, 0, 8232400) + 10b
 fe1c8446 void instanceRefKlass::acquire_pending_list_lock(BasicLock*) (b5bc74f8) + 6e
 feb0bb6d bool VM_GC_Operation::doit_prologue() (b5bc74e0, 1010100, 0, fe1c79d8) + 19
 fe1c7b5d void VMThread::execute(VM_Operation*) (b5bc74e0, a6, 158, a4) + 199
 fe0fb2df HeapWord*ParallelScavengeHeap::permanent_mem_allocate(unsigned) (8069678, a6, 88bbd20, 932e188) + 1b7
 fe5fd4fc constantPoolCacheOopDesc*constantPoolCacheKlass::allocate(int,bool,Thread*) (b6a00f38, 28, 0, 8232400, b5bc75cc, 0) + 7c
 fe9995ce constantPoolCacheOopDesc*oopFactory::new_constantPoolCache(int,bool,Thread*) (28, 0, 8232400, fea08ee5) + 22
 fea08f03 void Rewriter::make_constant_pool_cache(Thread*) (b5bc7750, 8232400, 838c890, fea0a450) + 2f
 fea0ab69 Rewriter::Rewriter #Nvariant 1(instanceKlassHandle,constantPoolHandle,objArrayHandle,Thread*) (b5bc7750, 823473c, 8234740, 8234744, 8232400, b5bc7778) + 72d
 fe198774 void Rewriter::rewrite(instanceKlassHandle,Thread*) (823473c, 8232400, a81f9cdd, 8a5a0) + 15c
 fe1983cf void instanceKlass::rewrite_class(Thread*) (ba9eab10, 8232400, 8232400, 1) + 5f
 fe6dbc85 bool instanceKlass::link_class_impl(instanceKlassHandle,bool,Thread*) (8234730, 1, 8232400, 82346ec) + 831
 fe13fd54 void instanceKlass::link_class(Thread*) (ba9eac40, 8232400, b5bc7918, 8064bc4) + 60
 fe13fddb void instanceKlass::initialize_impl(instanceKlassHandle,Thread*) (823472c) + 2b
 fe130bc2 void instanceKlass::initialize(Thread*) (ba9eac40, 8232400, 8232400, fe1ee1ad) + 7e
 fe1ee427 JVM_FindClassFromClassLoader (8232518, b5bc7ac0, 1, b5bc7ba4, 0, 1) + 28b
 fdddccb9 Java_java_lang_Class_forName0 (8232518, b5bc7b9c, b5bc7bac, 1, b5bc7ba4, b5bc7b74) + c5
 fac0a1d2 * java/lang/Class.forName0(Ljava/lang/String;ZLjava/lang/ClassLoader;)Ljava/lang/Class;+0
 facecf28 * *java/lang/Class.forName(Ljava/lang/String;ZLjava/lang/ClassLoader;)Ljava/lang/Class; [compiled] +33 (line 518)
 facecf28 * *nsk/sysdict/share/JCKTest$Loader.load(ILnsk/share/sysdict/JCKRuntimeTestCollector$JCKSuite;Lnsk/share/test/ExecutionController;)[Ljava/lang/Class;+194 (line 191)
 b6d07fe8 ???????? () + ffffffffb8f2b3f4

... Some more GC threads with similiar stack ...

-----------------  lwp# 32 / thread# 32  --------------------
 feecac65 lwp_cond_wait (82cee48, 82cee30, 0, 0)
 fe9ab82d void os::PlatformEvent::park() (82cee00, febe44a6, b59dfe58, fe975001) + bd
 fe9752a3 int Monitor::IWait(Thread*,long long) (80655e0, 82cdc00, 0, 0) + 2b3
 fe9783a7 bool Monitor::wait(bool,long,bool) (80655e0, 0, 0, 0) + 11f
 fe68f31f void GC_locker::jni_lock_slow() (109, 832b5c0, fac00308, fe17f5c5, 82cdc00, 0) + 4b
 fe206b21 jni_GetStringCritical (82cdd18, 832b5c0, 0, fdddd2fd) + 121
 fddddacc JNU_GetStringPlatformChars (82cdd18, 832b5c0, 0, fddde274) + 7e0
 fddde2b7 Java_java_io_UnixFileSystem_getBooleanAttributes0 (82cdd18, b59e005c, b59e0060, baa6e0c0, e570d698, e570dbf0) + 57
 fac8c237 * *java/io/UnixFileSystem.getBooleanAttributes0(Ljava/io/File;)I [compiled] 
 faca63a4 * *java/io/UnixFileSystem.getBooleanAttributes(Ljava/io/File;)I [compiled] +3 (line 484)
 b6b5da20 ???????? () + ffffffffb8d7f7c0
-----------------  lwp# 39 / thread# 39  --------------------
 feecac65 lwp_cond_wait (82d8048, 82d8030, 0, 0)
 fe9ab82d void os::PlatformEvent::park() (82d8000, 82003e8, b5592bd0, 1) + bd
 fe149d7e void ObjectMonitor::enter(Thread*) (82003cc, 82d7400, 82d7400, fea87ad9) + 59a
 fea87bd3 void ObjectSynchronizer::fast_enter(Handle,BasicLock*,bool,Thread*) (82d7bf4, b5779a48, 0, 82d7400) + 10b
 fe1c8446 void instanceRefKlass::acquire_pending_list_lock(BasicLock*) (b5779a48) + 6e
 feb0bb6d bool VM_GC_Operation::doit_prologue() (b5779a30, fdd76000, b5779cf8, fe1c79d8) + 19
 fe1c7b5d void VMThread::execute(VM_Operation*) (b5779a30, 6, 158, a4) + 199
 fe0fb2df HeapWord*ParallelScavengeHeap::permanent_mem_allocate(unsigned) (8069678, 6, 83376b0, 2e0800) + 1b7
 fe13f079 instanceOopDesc*instanceKlass::allocate_permanent_instance(Thread*) (b6a0e610, 82d7400, b5779b28, fe145d8d) + 6d
 fe145de1 Handle java_lang_String::create_tenured_from_unicode(unsigned short*,int,Thread*) (b5779b7c, 82d7798, b) + 65
 fe1897ca oopDesc*StringTable::intern(oopDesc*,Thread*) (e5522c88, 82d7400, e5522ce0, fe189949) + 1a6
 fe189a0d JVM_InternString (82d7518, b5779c18, b6c5ed68, fdddcd53) + d5
 fdddcd68 Java_java_lang_String_intern (82d7518, b5779c18, e5522c88, b6ad84b9, e5522ba0, b6ad8b80) + 24
 fac56620 * *java/lang/String.intern()Ljava/lang/String; [compiled] 
 fac660e8 * *java/util/jar/Attributes$Name.<init>(Ljava/lang/String;)V [compiled] +42 (line 963)
 fac660e8 * *java/util/jar/Attributes.putValue(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;+7 (line 336)
 b6e39e28 ???????? () + ffffffffb905d0e4

Comments
EVALUATION Marked as dup of 6988439.
29-12-2010

EVALUATION Not reproducible with JDK 7 b123.
29-12-2010

EVALUATION Likely a duplicate of 6988439. Please retest with 7b123 which has the fix for 6988439.
28-12-2010