Possible safepoint deadlock with ConcurrentHashTable and GlobalCounter::write_synchronize

XMLWordPrintable

    • Type: Bug
    • Resolution: Unresolved
    • Priority: P3
    • None
    • Affects Version/s: 27
    • Component/s: hotspot

      Test: com/sun/jdi/ArrayRangeTest.java

      The test timed out during the compilation phase - after 8 minutes.

      The timeout handler could not run jstack - timed out.

      The native stack dump shows the following interesting threads:

      The AttachListener is trying to do the thread dump:

      Thread 32 (Thread 0xffff03a021d0 (LWP 307050)):
      #0 0x0000ffff811eec34 in pthread_cond_wait@@GLIBC_2.17 () from /lib64/libpthread.so.0
      #1 0x0000ffff80a2298c in PlatformMonitor::wait(unsigned long) () from /opt/mach5/mesos/work_dir/jib-master/install/jdk-27+12-992/linux-aarch64.jdk/jdk-27/lib/server/libjvm.so
      #2 0x0000ffff809c7814 in Monitor::wait(unsigned long) () from /opt/mach5/mesos/work_dir/jib-master/install/jdk-27+12-992/linux-aarch64.jdk/jdk-27/lib/server/libjvm.so
      #3 0x0000ffff80c75da4 in VMThread::wait_until_executed(VM_Operation*) () from /opt/mach5/mesos/work_dir/jib-master/install/jdk-27+12-992/linux-aarch64.jdk/jdk-27/lib/server/libjvm.so
      #4 0x0000ffff80c76360 in VMThread::execute(VM_Operation*) () from /opt/mach5/mesos/work_dir/jib-master/install/jdk-27+12-992/linux-aarch64.jdk/jdk-27/lib/server/libjvm.so
      #5 0x0000ffff801eafc4 in thread_dump(AttachOperation*, attachStream*) () from /opt/mach5/mesos/work_dir/jib-master/install/jdk-27+12-992/linux-aarch64.jdk/jdk-27/lib/server/libjvm.so
      #6 0x0000ffff801ebad8 in AttachListenerThread::thread_entry(JavaThread*, JavaThread*) () from /opt/mach5/mesos/work_dir/jib-master/install/jdk-27+12-992/linux-aarch64.jdk/jdk-27/lib/server/libjvm.so
      #7 0x0000ffff80653628 in JavaThread::thread_main_inner() [clone .part.0] () from /opt/mach5/mesos/work_dir/jib-master/install/jdk-27+12-992/linux-aarch64.jdk/jdk-27/lib/server/libjvm.so
      #8 0x0000ffff80bdcf58 in Thread::call_run() () from /opt/mach5/mesos/work_dir/jib-master/install/jdk-27+12-992/linux-aarch64.jdk/jdk-27/lib/server/libjvm.so
      #9 0x0000ffff80a17160 in thread_native_entry(Thread*) () from /opt/mach5/mesos/work_dir/jib-master/install/jdk-27+12-992/linux-aarch64.jdk/jdk-27/lib/server/libjvm.so
      #10 0x0000ffff811e8950 in start_thread () from /lib64/libpthread.so.0
      #11 0x0000ffff8128c90c in thread_start () from /lib64/libc.so.6

      The VMThread is trying to bring the VM to a safepoint:

      Thread 8 (Thread 0xffff7cdaf1d0 (LWP 289233)):
      #0 0x0000ffff81310e44 in nanosleep () from /lib64/libc.so.6
      #1 0x0000ffff80a2114c in os::naked_short_sleep(long) () from /opt/mach5/mesos/work_dir/jib-master/install/jdk-27+12-992/linux-aarch64.jdk/jdk-27/lib/server/libjvm.so
      #2 0x0000ffff80aca0dc in SafepointSynchronize::synchronize_threads(long, int, int*) () from /opt/mach5/mesos/work_dir/jib-master/install/jdk-27+12-992/linux-aarch64.jdk/jdk-27/lib/server/libjvm.so
      #3 0x0000ffff80acae68 in SafepointSynchronize::begin() () from /opt/mach5/mesos/work_dir/jib-master/install/jdk-27+12-992/linux-aarch64.jdk/jdk-27/lib/server/libjvm.so

      We then have two threads using CHT that seem not be progressing to being safepoint-safe:

      Thread 2 (Thread 0xffff7fcc81d0 (LWP 289223)):
      #0 0x0000ffff81310e44 in nanosleep () from /lib64/libc.so.6
      #1 0x0000ffff80a2111c in os::naked_short_nanosleep(long) () from /opt/mach5/mesos/work_dir/jib-master/install/jdk-27+12-992/linux-aarch64.jdk/jdk-27/lib/server/libjvm.so
      #2 0x0000ffff80afa670 in SpinYield::yield_or_sleep() () from /opt/mach5/mesos/work_dir/jib-master/install/jdk-27+12-992/linux-aarch64.jdk/jdk-27/lib/server/libjvm.so
      #3 0x0000ffff805bb454 in GlobalCounter::write_synchronize() () from /opt/mach5/mesos/work_dir/jib-master/install/jdk-27+12-992/linux-aarch64.jdk/jdk-27/lib/server/libjvm.so
      #4 0x0000ffff80b8867c in void ConcurrentHashTable<SymbolTableConfig, (MemTag)11>::delete_in_bucket<SymbolTableLookup>(Thread*, ConcurrentHashTable<SymbolTableConfig, (MemTag)11>::Bucket*, SymbolTableLookup&) [clone .isra.0] () from /opt/mach5/mesos/work_dir/jib-master/install/jdk-27+12-992/linux-aarch64.jdk/jdk-27/lib/server/libjvm.so
      #5 0x0000ffff80b8bce4 in SymbolTable::do_add_if_needed(char const*, int, unsigned long, bool) () from /opt/mach5/mesos/work_dir/jib-master/install/jdk-27+12-992/linux-aarch64.jdk/jdk-27/lib/server/libjvm.so
      #6 0x0000ffff80b8c0c0 in SymbolTable::new_symbols(ClassLoaderData*, constantPoolHandle const&, int, char const**, int*, int*, unsigned int*) () from /opt/mach5/mesos/work_dir/jib-master/install/jdk-27+12-992/linux-aarch64.jdk/jdk-27/lib/server/libjvm.so
      #7 0x0000ffff8033a934 in ClassFileParser::parse_constant_pool_entries(ClassFileStream const*, ConstantPool*, int, JavaThread*) () from /opt/mach5/mesos/work_dir/jib-master/install/jdk-27+12-992/linux-aarch64.jdk/jdk-27/lib/server/libjvm.so
      #8 0x0000ffff8033aed0 in ClassFileParser::parse_stream(ClassFileStream const*, JavaThread*) [clone .part.0] () from /opt/mach5/mesos/work_dir/jib-master/install/jdk-27+12-992/linux-aarch64.jdk/jdk-27/lib/server/libjvm.so
      #9 0x0000ffff8033bfcc in ClassFileParser::ClassFileParser(ClassFileStream*, Symbol*, ClassLoaderData*, ClassLoadInfo const*, ClassFileParser::Publicity, JavaThread*) () from /opt/mach5/mesos/work_dir/jib-master/install/jdk-27+12-992/linux-aarch64.jdk/jdk-27/lib/server/libjvm.so
      #10 0x0000ffff80877af0 in KlassFactory::create_from_stream(ClassFileStream*, Symbol*, ClassLoaderData*, ClassLoadInfo const&, JavaThread*) () from /opt/mach5/mesos/work_dir/jib-master/install/jdk-27+12-992/linux-aarch64.jdk/jdk-27/lib/server/libjvm.so
      #11 0x0000ffff80347050 in ClassLoader::load_class(Symbol*, PackageEntry*, bool, JavaThread*) () from /opt/mach5/mesos/work_dir/jib-master/install/jdk-27+12-992/linux-aarch64.jdk/jdk-27/lib/server/libjvm.so
      #12 0x0000ffff80b9eef0 in SystemDictionary::load_instance_class_impl(Symbol*, Handle, JavaThread*) () from /opt/mach5/mesos/work_dir/jib-master/install/jdk-27+12-992/linux-aarch64.jdk/jdk-27/lib/server/libjvm.so
      #13 0x0000ffff80b9d560 in SystemDictionary::load_instance_class(Symbol*, Handle, JavaThread*) () from /opt/mach5/mesos/work_dir/jib-master/install/jdk-27+12-992/linux-aarch64.jdk/jdk-27/lib/server/libjvm.so
      #14 0x0000ffff80b9dc94 in SystemDictionary::resolve_instance_class_or_null(Symbol*, Handle, JavaThread*) () from /opt/mach5/mesos/work_dir/jib-master/install/jdk-27+12-992/linux-aarch64.jdk/jdk-27/lib/server/libjvm.so
      #15 0x0000ffff80b9f15c in SystemDictionary::resolve_or_fail(Symbol*, Handle, bool, JavaThread*) () from /opt/mach5/mesos/work_dir/jib-master/install/jdk-27+12-992/linux-aarch64.jdk/jdk-27/lib/server/libjvm.so
      #16 0x0000ffff803be738 in ConstantPool::klass_at_impl(constantPoolHandle const&, int, JavaThread*) () from /opt/mach5/mesos/work_dir/jib-master/install/jdk-27+12-992/linux-aarch64.jdk/jdk-27/lib/server/libjvm.so
      #17 0x0000ffff8062f580 in InterpreterRuntime::quicken_io_cc(JavaThread*) () from /opt/mach5/mesos/work_dir/jib-master/install/jdk-27+12-992/linux-aarch64.jdk/jdk-27/lib/server/libjvm.so
      #18 0x0000ffff67747da4 in ?? ()
      #19 0x00000000d1260948 in ?? ()
      #20 0x00000000d1260838 in ?? ()
      Backtrace stopped: previous frame inner to this frame (corrupt stack?)

      and

      Thread 27 (Thread 0xffff038031d0 (LWP 289267)):
      #0 0x0000ffff81310e44 in nanosleep () from /lib64/libc.so.6
      #1 0x0000ffff80a2111c in os::naked_short_nanosleep(long) () from /opt/mach5/mesos/work_dir/jib-master/install/jdk-27+12-992/linux-aarch64.jdk/jdk-27/lib/server/libjvm.so
      #2 0x0000ffff80afa670 in SpinYield::yield_or_sleep() () from /opt/mach5/mesos/work_dir/jib-master/install/jdk-27+12-992/linux-aarch64.jdk/jdk-27/lib/server/libjvm.so
      #3 0x0000ffff805bb454 in GlobalCounter::write_synchronize() () from /opt/mach5/mesos/work_dir/jib-master/install/jdk-27+12-992/linux-aarch64.jdk/jdk-27/lib/server/libjvm.so
      #4 0x0000ffff80ab8948 in void ConcurrentHashTable<ResolvedMethodTableConfig, (MemTag)1>::delete_in_bucket<ResolvedMethodTableLookup>(Thread*, ConcurrentHashTable<ResolvedMethodTableConfig, (MemTag)1>::Bucket*, ResolvedMethodTableLookup&) [clone .isra.0] () from /opt/mach5/mesos/work_dir/jib-master/install/jdk-27+12-992/linux-aarch64.jdk/jdk-27/lib/server/libjvm.so
      #5 0x0000ffff80ab9ecc in ResolvedMethodTable::add_method(Method const*, Handle) () from /opt/mach5/mesos/work_dir/jib-master/install/jdk-27+12-992/linux-aarch64.jdk/jdk-27/lib/server/libjvm.so
      #6 0x0000ffff808b3204 in CallInfo::set_resolved_method_name(JavaThread*) () from /opt/mach5/mesos/work_dir/jib-master/install/jdk-27+12-992/linux-aarch64.jdk/jdk-27/lib/server/libjvm.so
      #7 0x0000ffff809aaad8 in MethodHandles::resolve_MemberName(Handle, Klass*, int, bool, JavaThread*) () from /opt/mach5/mesos/work_dir/jib-master/install/jdk-27+12-992/linux-aarch64.jdk/jdk-27/lib/server/libjvm.so
      #8 0x0000ffff809aafa8 in MHN_resolve_Mem () from /opt/mach5/mesos/work_dir/jib-master/install/jdk-27+12-992/linux-aarch64.jdk/jdk-27/lib/server/libjvm.so
      #9 0x0000ffff67e7c604 in ?? ()
      #10 0x0000ffff48305080 in ?? ()
      Backtrace stopped: previous frame inner to this frame (corrupt stack?)

      So two threads spinning in delete_in_bucket, stuck in GlobalCounter::write_synchronize.

      Starting off in hotspot->runtime

            Assignee:
            Unassigned
            Reporter:
            David Holmes
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated: