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

DirectNativeCallWrapper::verify_resolve_call fails with "assert(db != __null && !db->is_adapter_blob()) failed: must use stub!"

    XMLWordPrintable

Details

    • gc
    • aarch64
    • linux

    Description

      The following test failed in the JDK20 CI:

      runtime/cds/appcds/redefineClass/RedefineRunningMethods_Shared.java

      Here's a snippet from the log file:

      ----------System.err:(155/12572)----------
       stdout: [The class is shared as expected: RedefineRunningMethods_Shared
      The class is shared as expected: RedefineRunningMethods_SharedHelper
      The class is shared as expected: RedefineRunningMethods
      The class is shared as expected: RedefineRunningMethods_B
      The class is shared as expected: RedefineClassHelper
      The class is shared as expected: jdk.test.lib.compiler.InMemoryJavaCompiler
      The class is shared as expected: jdk.test.lib.compiler.InMemoryJavaCompiler$FileManagerWrapper
      The class is shared as expected: jdk.test.lib.compiler.InMemoryJavaCompiler$FileManagerWrapper$1
      The class is shared as expected: jdk.test.lib.compiler.InMemoryJavaCompiler$MemoryJavaFileObject
      [2.624s][trace][redefine,class,iklass,add] adding previous version ref for RedefineRunningMethods_B, EMCP_cnt=4
      [2.624s][trace][redefine,class,iklass,add] scratch class added; one of its methods is on_stack.
      [2.654s][trace][redefine,class,iklass,purge] Class unloading: has_previous_versions = true
      [2.654s][trace][redefine,class,iklass,purge] RedefineRunningMethods_B: previous versions
      [2.654s][trace][redefine,class,iklass,purge] previous version 0x000000080113ab30 is alive
      [2.654s][trace][redefine,class,iklass,purge] previous version stats: live=1, deleted=0
      infinite called
      [2.693s][trace][redefine,class,iklass,purge] Class unloading: has_previous_versions = true
      [2.693s][trace][redefine,class,iklass,purge] RedefineRunningMethods_B: previous versions
      [2.693s][trace][redefine,class,iklass,purge] previous version 0x000000080113ab30 is alive
      [2.693s][trace][redefine,class,iklass,purge] previous version stats: live=1, deleted=0
      [2.715s][trace][redefine,class,iklass,purge] Class unloading: has_previous_versions = true
      [2.715s][trace][redefine,class,iklass,purge] RedefineRunningMethods_B: previous versions
      [2.715s][trace][redefine,class,iklass,purge] previous version 0x000000080113ab30 is alive
      [2.715s][trace][redefine,class,iklass,purge] previous version stats: live=1, deleted=0
      [2.740s][trace][redefine,class,iklass,purge] Class unloading: has_previous_versions = true
      [2.740s][trace][redefine,class,iklass,purge] RedefineRunningMethods_B: previous versions
      [2.740s][trace][redefine,class,iklass,purge] previous version 0x000000080113ab30 is alive
      [2.740s][trace][redefine,class,iklass,purge] previous version stats: live=1, deleted=0
      [2.762s][trace][redefine,class,iklass,purge] Class unloading: has_previous_versions = true
      [2.762s][trace][redefine,class,iklass,purge] RedefineRunningMethods_B: previous versions
      [2.762s][trace][redefine,class,iklass,purge] previous version 0x000000080113ab30 is alive
      [2.762s][trace][redefine,class,iklass,purge] previous version stats: live=1, deleted=0
      [2.787s][trace][redefine,class,iklass,purge] Class unloading: has_previous_versions = true
      [2.787s][trace][redefine,class,iklass,purge] RedefineRunningMethods_B: previous versions
      [2.787s][trace][redefine,class,iklass,purge] previous version 0x000000080113ab30 is alive
      [2.787s][trace][redefine,class,iklass,purge] previous version stats: live=1, deleted=0
      [2.811s][trace][redefine,class,iklass,purge] Class unloading: has_previous_versions = true
      [2.811s][trace][redefine,class,iklass,purge] RedefineRunningMethods_B: previous versions
      [2.811s][trace][redefine,class,iklass,purge] previous version 0x000000080113ab30 is alive
      [2.811s][trace][redefine,class,iklass,purge] previous version stats: live=1, deleted=0
      [2.834s][trace][redefine,class,iklass,purge] Class unloading: has_previous_versions = true
      [2.834s][trace][redefine,class,iklass,purge] RedefineRunningMethods_B: previous versions
      [2.834s][trace][redefine,class,iklass,purge] previous version 0x000000080113ab30 is alive
      [2.834s][trace][redefine,class,iklass,purge] previous version stats: live=1, deleted=0
      [2.856s][trace][redefine,class,iklass,purge] Class unloading: has_previous_versions = true
      [2.856s][trace][redefine,class,iklass,purge] RedefineRunningMethods_B: previous versions
      [2.856s][trace][redefine,class,iklass,purge] previous version 0x000000080113ab30 is alive
      [2.856s][trace][redefine,class,iklass,purge] previous version stats: live=1, deleted=0
      [2.878s][trace][redefine,class,iklass,purge] Class unloading: has_previous_versions = true
      [2.878s][trace][redefine,class,iklass,purge] RedefineRunningMethods_B: previous versions
      [2.878s][trace][redefine,class,iklass,purge] previous version 0x000000080113ab30 is alive
      [2.879s][trace][redefine,class,iklass,purge] previous version stats: live=1, deleted=0
      [2.902s][trace][redefine,class,iklass,purge] Class unloading: has_previous_versions = true
      [2.902s][trace][redefine,class,iklass,purge] RedefineRunningMethods_B: previous versions
      [2.902s][trace][redefine,class,iklass,purge] previous version 0x000000080113ab30 is alive
      [2.902s][trace][redefine,class,iklass,purge] previous version stats: live=1, deleted=0
      [2.943s][trace][redefine,class,iklass,purge] Class unloading: has_previous_versions = true
      [2.943s][trace][redefine,class,iklass,purge] RedefineRunningMethods_B: previous versions
      [2.943s][trace][redefine,class,iklass,purge] previous version 0x000000080113ab30 is alive
      [2.943s][trace][redefine,class,iklass,purge] previous version stats: live=1, deleted=0
      [2.966s][trace][redefine,class,iklass,purge] Class unloading: has_previous_versions = true
      [2.966s][trace][redefine,class,iklass,purge] RedefineRunningMethods_B: previous versions
      [2.966s][trace][redefine,class,iklass,purge] previous version 0x000000080113ab30 is alive
      [2.966s][trace][redefine,class,iklass,purge] previous version stats: live=1, deleted=0
      [2.988s][trace][redefine,class,iklass,purge] Class unloading: has_previous_versions = true
      [2.988s][trace][redefine,class,iklass,purge] RedefineRunningMethods_B: previous versions
      [2.988s][trace][redefine,class,iklass,purge] previous version 0x000000080113ab30 is alive
      [2.988s][trace][redefine,class,iklass,purge] previous version stats: live=1, deleted=0
      [3.024s][trace][redefine,class,iklass,purge] Class unloading: has_previous_versions = true
      [3.024s][trace][redefine,class,iklass,purge] RedefineRunningMethods_B: previous versions
      [3.024s][trace][redefine,class,iklass,purge] previous version 0x000000080113ab30 is alive
      [3.024s][trace][redefine,class,iklass,purge] previous version stats: live=1, deleted=0
      [3.048s][trace][redefine,class,iklass,purge] Class unloading: has_previous_versions = true
      [3.048s][trace][redefine,class,iklass,purge] RedefineRunningMethods_B: previous versions
      [3.048s][trace][redefine,class,iklass,purge] previous version 0x000000080113ab30 is alive
      [3.048s][trace][redefine,class,iklass,purge] previous version stats: live=1, deleted=0
      [3.073s][trace][redefine,class,iklass,purge] Class unloading: has_previous_versions = true
      [3.073s][trace][redefine,class,iklass,purge] RedefineRunningMethods_B: previous versions
      [3.073s][trace][redefine,class,iklass,purge] previous version 0x000000080113ab30 is alive
      [3.073s][trace][redefine,class,iklass,purge] previous version stats: live=1, deleted=0
      [3.097s][trace][redefine,class,iklass,purge] Class unloading: has_previous_versions = true
      [3.097s][trace][redefine,class,iklass,purge] RedefineRunningMethods_B: previous versions
      [3.097s][trace][redefine,class,iklass,purge] previous version 0x000000080113ab30 is alive
      [3.097s][trace][redefine,class,iklass,purge] previous version stats: live=1, deleted=0
      [3.121s][trace][redefine,class,iklass,purge] Class unloading: has_previous_versions = true
      [3.121s][trace][redefine,class,iklass,purge] RedefineRunningMethods_B: previous versions
      [3.121s][trace][redefine,class,iklass,purge] previous version 0x000000080113ab30 is alive
      [3.121s][trace][redefine,class,iklass,purge] previous version stats: live=1, deleted=0
      [3.144s][trace][redefine,class,iklass,purge] Class unloading: has_previous_versions = true
      [3.144s][trace][redefine,class,iklass,purge] RedefineRunningMethods_B: previous versions
      [3.144s][trace][redefine,class,iklass,purge] previous version 0x000000080113ab30 is alive
      [3.144s][trace][redefine,class,iklass,purge] previous version stats: live=1, deleted=0
      [3.172s][trace][redefine,class,iklass,purge] Class unloading: has_previous_versions = true
      [3.172s][trace][redefine,class,iklass,purge] RedefineRunningMethods_B: previous versions
      [3.172s][trace][redefine,class,iklass,purge] previous version 0x000000080113ab30 is alive
      [3.172s][trace][redefine,class,iklass,purge] previous version stats: live=1, deleted=0
      [3.295s][trace][redefine,class,iklass,add ] adding previous version ref for RedefineRunningMethods_B, EMCP_cnt=2
      [3.295s][trace][redefine,class,iklass,purge] RedefineRunningMethods_B: previous versions
      [3.295s][trace][redefine,class,iklass,purge] previous version 0x000000080113ab30 is alive
      [3.295s][trace][redefine,class,iklass,purge] previous version stats: live=1, deleted=0
      [3.295s][trace][redefine,class,iklass,add ] infinite_emcp(()V): flush obsolete method @3 in version @0
      [3.295s][trace][redefine,class,iklass,add ] localSleep(()V): flush obsolete method @4 in version @0
      [3.295s][trace][redefine,class,iklass,add ] scratch class added; one of its methods is on_stack.
      [3.328s][trace][redefine,class,iklass,purge] Class unloading: has_previous_versions = true
      [3.328s][trace][redefine,class,iklass,purge] RedefineRunningMethods_B: previous versions
      [3.328s][trace][redefine,class,iklass,purge] previous version 0x000000080113b178 is alive
      [3.328s][trace][redefine,class,iklass,purge] previous version 0x000000080113ab30 is alive
      [3.328s][trace][redefine,class,iklass,purge] previous version stats: live=2, deleted=0
      # To suppress the following error report, specify this argument
      # after -XX: or in .hotspotrc: SuppressErrorAt=/nmethod.cpp:3249
      #
      # A fatal error has been detected by the Java Runtime Environment:
      #
      # Internal Error (/opt/mach5/mesos/work_dir/slaves/0c72054a-24ab-4dbb-944f-97f9341a1b96-S94905/frameworks/1735e8a2-a1db-478c-8104-60c8b0af87dd-0196/executors/5ecec92a-60d9-4c7e-9510-cf8bac54efe9/runs/863af1fa-8803-489d-829f-2e54063e48d5/workspace/open/src/hotspot/share/code/nmethod.cpp:3249), pid=3351329, tid=3351333
      # assert(db != __null && !db->is_adapter_blob()) failed: must use stub!
      #
      # JRE version: Java(TM) SE Runtime Environment (20.0+19) (fastdebug build 20-ea+19-1326)
      # Java VM: Java HotSpot(TM) 64-Bit Server VM (fastdebug 20-ea+19-1326, mixed mode, sharing, tiered, compressed class ptrs, z gc, linux-aarch64)
      # Problematic frame:
      # V [libjvm.so+0x1448424][thread 3351361 also had an error]
        DirectNativeCallWrapper::verify_resolve_call(unsigned char*) const+0x54
      #
      # Core dump will be written. Default location: Core dumps may be processed with "/opt/core.sh %p" (or dumping to /opt/mach5/mesos/work_dir/slaves/0c72054a-24ab-4dbb-944f-97f9341a1b96-S94889/frameworks/1735e8a2-a1db-478c-8104-60c8b0af87dd-0196/executors/6ca99daf-28b6-456d-84e1-2511b8bcab33/runs/e3985560-a056-4d43-82fc-761d1adaf63f/testoutput/test-support/jtreg_open_test_hotspot_jtreg_hotspot_runtime/scratch/3/core.3351329)
      #
      Unsupported internal testing APIs have been used.

      # An error report file with more information is saved as:
      # /opt/mach5/mesos/work_dir/slaves/0c72054a-24ab-4dbb-944f-97f9341a1b96-S94889/frameworks/1735e8a2-a1db-478c-8104-60c8b0af87dd-0196/executors/6ca99daf-28b6-456d-84e1-2511b8bcab33/runs/e3985560-a056-4d43-82fc-761d1adaf63f/testoutput/test-support/jtreg_open_test_hotspot_jtreg_hotspot_runtime/scratch/3/hs_err_pid3351329.log
      [thread 3351359 also had an error]
      [thread 3351357 also had an error]
      [thread 3351394 also had an error]
      #
      # If you would like to submit a bug report, please visit:
      # https://bugreport.java.com/bugreport/crash.jsp
      #
      ];
       stderr: [java version "20-ea" 2023-03-21
      Java(TM) SE Runtime Environment (fastdebug build 20-ea+19-1326)
      Java HotSpot(TM) 64-Bit Server VM (fastdebug build 20-ea+19-1326, mixed mode, sharing)
      ]
       exitValue = 134

      java.lang.RuntimeException: Hotspot crashed
      at jdk.test.lib.cds.CDSTestUtils.checkCommonExecExceptions(CDSTestUtils.java:320)
      at jdk.test.lib.cds.CDSTestUtils.checkExec(CDSTestUtils.java:473)
      at jdk.test.lib.cds.CDSTestUtils.checkExec(CDSTestUtils.java:460)
      at RedefineRunningMethods_Shared.main(RedefineRunningMethods_Shared.java:78)
      at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
      at java.base/java.lang.reflect.Method.invoke(Method.java:578)
      at com.sun.javatest.regtest.agent.MainActionHelper$AgentVMRunnable.run(MainActionHelper.java:312)
      at java.base/java.lang.Thread.run(Thread.java:1591)

      JavaTest Message: Test threw exception: java.lang.RuntimeException
      JavaTest Message: shutting down test

      result: Failed. Execution failed: `main' threw exception: java.lang.RuntimeException: Hotspot crashed


      Here's the crashing thread's stack:

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

      Current thread (0x0000fffd08054ce0): WorkerThread "ZWorker#0" [stack: 0x0000fffd0cbe0000,0x0000fffd0cde0000] [id=3351333]

      Stack: [0x0000fffd0cbe0000,0x0000fffd0cde0000], sp=0x0000fffd0cdde5c0, free space=2041k
      Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
      V [libjvm.so+0x1448424] DirectNativeCallWrapper::verify_resolve_call(unsigned char*) const+0x54 (nmethod.cpp:3249)
      V [libjvm.so+0x9a4778] CompiledIC::is_call_to_interpreted() const+0x98 (compiledIC.cpp:353)
      V [libjvm.so+0x9a71d4] CompiledIC::verify()+0x54 (compiledIC.cpp:691)
      V [libjvm.so+0x9ad8d0] CompiledMethod::cleanup_inline_caches_impl(bool, bool)+0x1f0 (compiledIC.hpp:303)
      V [libjvm.so+0x9ae738] CompiledMethod::unload_nmethod_caches(bool)+0xc8 (compiledMethod.cpp:550)
      V [libjvm.so+0x194ae4c] ZNMethodUnlinkClosure::do_nmethod(nmethod*)+0xbc (zNMethod.cpp:309)
      V [libjvm.so+0x194d0ac] ZNMethodTableIteration::nmethods_do(NMethodClosure*)+0x8c (zNMethodTableIteration.cpp:72)
      V [libjvm.so+0x194aa48] ZNMethodUnlinkTask::work()+0x28 (zNMethod.cpp:338)
      V [libjvm.so+0x197f708] ZTask::Task::work(unsigned int)+0x28 (zTask.cpp:34)
      V [libjvm.so+0x18f3678] WorkerThread::run()+0x98 (workerThread.cpp:69)
      V [libjvm.so+0x17af638] Thread::call_run()+0xf8 (thread.cpp:224)
      V [libjvm.so+0x14c4824] thread_native_entry(Thread*)+0x100 (os_linux.cpp:710)
      C [libpthread.so.0+0x7908] start_thread+0x188


      This is a ZGC WorkerThread calling compiler code and failing
      an assertion. I'm starting this bug off in hotspot/gc for initial triage.

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              dcubed Daniel Daugherty
              Votes:
              0 Vote for this issue
              Watchers:
              8 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: