Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8224970

ShenandoahRootScanner::roots_do assert is too strong

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: P4 P4
    • 13
    • 8-shenandoah, 11-shenandoah, 13
    • hotspot
    • None
    • gc
    • b23

        This shows up in testing:

        # A fatal error has been detected by the Java Runtime Environment:
        #
        # Internal Error (/home/buildbot/worker/shenandoah-jdkX-linux/build/src/hotspot/share/gc/shenandoah/shenandoahRootProcessor.inline.hpp:94), pid=112582, tid=112613
        # assert(!ShenandoahHeap::heap()->unload_classes() || ShenandoahHeap::heap()->heuristics()->can_do_traversal_gc()) failed: No class unloading or traversal GC
        #
        # JRE version: OpenJDK Runtime Environment (13.0) (fastdebug build 13-testing+0-builds.shipilev.net-openjdk-shenandoah-jdk-b465-20190527-jdk-1321)
        # Java VM: OpenJDK Server VM (fastdebug 13-testing+0-builds.shipilev.net-openjdk-shenandoah-jdk-b465-20190527-jdk-1321, mixed mode, tiered, shenandoah gc, linux-x86)
        # Problematic frame:
        # V [libjvm.so+0x12fcc44] ShenandoahRootScanner<ShenandoahAllCodeRootsIterator>::roots_do(unsigned int, OopClosure*, CLDClosure*, CodeBlobClosure*, ThreadClosure*)+0x164
        #
        # No core dump will be written. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again

        --------------- T H R E A D ---------------

        Current thread (0xdd4ae000): VMThread "VM Thread" [stack: 0xdd165000,0xdd1e5000] [id=55777]

        Stack: [0xdd165000,0xdd1e5000], sp=0xdd1e3b70, free space=506k
        Native frames: (J=compiled Java code, A=aot compiled Java code, j=interpreted, Vv=VM code, C=native code)
        V [libjvm.so+0x12fcc44] ShenandoahRootScanner<ShenandoahAllCodeRootsIterator>::roots_do(unsigned int, OopClosure*, CLDClosure*, CodeBlobClosure*, ThreadClosure*)+0x164
        V [libjvm.so+0x1328f2a] ShenandoahHeap::object_iterate(ObjectClosure*) [clone .part.141]+0x17a
        V [libjvm.so+0xb94c44] HeapInspection::populate_table(KlassInfoTable*, BoolObjectClosure*)+0x94
        V [libjvm.so+0xb950ea] HeapInspection::heap_inspection(outputStream*)+0x25a
        V [libjvm.so+0xb3554d] VM_GC_HeapInspection::doit()+0x6d
        V [libjvm.so+0x158c9c1] VM_Operation::evaluate()+0x1c1
        V [libjvm.so+0x15b85d8] VMThread::evaluate_operation(VM_Operation*) [clone .constprop.61]+0x128
        V [libjvm.so+0x15b8cfb] VMThread::loop()+0x38b
        V [libjvm.so+0x15b96ce] VMThread::run()+0xce
        V [libjvm.so+0x14d54f9] Thread::call_run()+0xf9
        V [libjvm.so+0x112dfc6] thread_native_entry(Thread*)+0x136
        C [libpthread.so.0+0x627a] start_thread+0xda

        It seems we have entered for VM_GC_HeapInspection, which means the assert that verifies ShenandoahRootScanner::roots_do is only entered for class unloading / traversal is too strong.

        Introduced by JDK-8224210.

              shade Aleksey Shipilev
              shade Aleksey Shipilev
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

                Created:
                Updated:
                Resolved: