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

JVMCI_lock fails to get initialized when cds is disabled

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: P4
    • Resolution: Fixed
    • Affects Version/s: 13, 14
    • Fix Version/s: 14
    • Component/s: hotspot
    • Labels:
      None
    • Subcomponent:
    • Resolved In Build:
      b20

      Description

      * Reproduce
      -------------------------------------
      bash configure --disable-cds ...

      java \
         -XX:+UnlockExperimentalVMOptions \
         -XX:+EnableJVMCI \
         -Djvmci.Compiler=null \
         -XX:+JVMCIPrintProperties
      -------------------------------------

      * Symptom
      -------------------------------------
      #
      # A fatal error has been detected by the Java Runtime Environment:
      #
      # SIGSEGV (0xb) at pc=0x00007f6fdfec6a91, pid=10257, tid=10258
      #
      # JRE version: OpenJDK Runtime Environment (14.0) (build 14-internal+0-adhoc.fool.jdk-dev)
      # Java VM: OpenJDK 64-Bit Server VM (14-internal+0-adhoc.fool.jdk-dev, mixed mode, tiered, jvmci, compressed oops, g1 gc, linux-amd64)
      # Problematic frame:
      # V [libjvm.so+0xc15a91] Mutex::unlock()+0x1
      #
      -------------------------------------

      * List of failing tests due to this bug (127 failures in total)
      -------------------------------------
      compiler/aot/DeoptimizationTest.java: check if aot code can be deoptimized
      compiler/aot/RecompilationTest.java: check if recompilation after aot goes fine
      compiler/aot/SharedUsageTest.java: check if .so can be successfully shared with 2 java processes
      compiler/aot/calls/fromAot/AotInvokeDynamic2AotTest.java: check calls from aot to aot code using invokedynamic
      compiler/aot/calls/fromAot/AotInvokeDynamic2CompiledTest.java: check calls from aot to jit-compiled code using invokedynamic
      compiler/aot/calls/fromAot/AotInvokeDynamic2InterpretedTest.java: check calls from aot to interpreted code using invokedynamic
      compiler/aot/calls/fromAot/AotInvokeDynamic2NativeTest.java: check calls from aot to native code using invokedynamic
      compiler/aot/calls/fromAot/AotInvokeInterface2AotTest.java: check calls from aot to aot code using invokeinterface
      compiler/aot/calls/fromAot/AotInvokeInterface2CompiledTest.java: check calls from aot to jit-compiled code using invokeinterface
      compiler/aot/calls/fromAot/AotInvokeInterface2InterpretedTest.java: check calls from aot to interpreted code using invokeinterface
      compiler/aot/calls/fromAot/AotInvokeInterface2NativeTest.java: check calls from aot to native code using invokeinterface
      compiler/aot/calls/fromAot/AotInvokeSpecial2AotTest.java: check calls from aot to aot code using invokespecial
      compiler/aot/calls/fromAot/AotInvokeSpecial2CompiledTest.java: check calls from aot to jit-compiled code using invokespecial
      compiler/aot/calls/fromAot/AotInvokeSpecial2InterpretedTest.java: check calls from aot to interpreted code using invokespecial
      compiler/aot/calls/fromAot/AotInvokeSpecial2NativeTest.java: check calls from aot to interpreted code using invokespecial
      compiler/aot/calls/fromAot/AotInvokeStatic2AotTest.java: check calls from aot to aot code using invokestatic
      compiler/aot/calls/fromAot/AotInvokeStatic2CompiledTest.java: check calls from aot to jit-compiled code using invokestatic
      compiler/aot/calls/fromAot/AotInvokeStatic2InterpretedTest.java: check calls from aot to interpreted code using invokestatic
      compiler/aot/calls/fromAot/AotInvokeStatic2NativeTest.java: check calls from aot to native code using invokestatic
      compiler/aot/calls/fromAot/AotInvokeVirtual2AotTest.java: check calls from aot to aot code, using invokevirtual
      compiler/aot/calls/fromAot/AotInvokeVirtual2CompiledTest.java: check calls from aot to jit-compiled code, using invokevirtual
      compiler/aot/calls/fromAot/AotInvokeVirtual2InterpretedTest.java: check calls from aot to interpreted code, using invokevirtual
      compiler/aot/calls/fromAot/AotInvokeVirtual2NativeTest.java: check calls from aot to native code, using invokevirtual
      compiler/aot/calls/fromCompiled/CompiledInvokeDynamic2AotTest.java: check calls from jit-compiled to aot code using invokedynamic
      compiler/aot/calls/fromCompiled/CompiledInvokeInterface2AotTest.java: check calls from jit-compiled to aot code using invokeinterface
      compiler/aot/calls/fromCompiled/CompiledInvokeSpecial2AotTest.java: check calls from jit-compiled to aot code using invokespecial
      compiler/aot/calls/fromCompiled/CompiledInvokeStatic2AotTest.java: check calls from jit-compiled to aot code using invokestatic
      compiler/aot/calls/fromCompiled/CompiledInvokeVirtual2AotTest.java: check calls from jit-compiled to aot code using invokevirtual
      compiler/aot/calls/fromInterpreted/InterpretedInvokeDynamic2AotTest.java: check calls from interpreted to aot code using invokedynamic
      compiler/aot/calls/fromInterpreted/InterpretedInvokeInterface2AotTest.java: check calls from interpreted to aot code using invokeinterface
      compiler/aot/calls/fromInterpreted/InterpretedInvokeSpecial2AotTest.java: check calls from interpreted to aot code using invokespecial
      compiler/aot/calls/fromInterpreted/InterpretedInvokeStatic2AotTest.java: check calls from interpreted to aot code using invokestatic
      compiler/aot/calls/fromInterpreted/InterpretedInvokeVirtual2AotTest.java: check calls from interpreted to aot code using invokevirtual
      compiler/aot/calls/fromNative/NativeInvokeSpecial2AotTest.java: check calls from native to aot code using invokespecial
      compiler/aot/calls/fromNative/NativeInvokeStatic2AotTest.java: check calls from native to aot code using invokestatic
      compiler/aot/calls/fromNative/NativeInvokeVirtual2AotTest.java: check calls from native to aot code using invokevirtual
      compiler/aot/cli/DisabledAOTWithLibraryTest.java: check if providing aot library with aot disabled is handled properly
      compiler/aot/cli/MultipleAOTLibraryTest.java: check if multiple aot libraries are loaded successfully
      compiler/aot/cli/SingleAOTLibraryTest.java: check if single aot library is loaded successfully
      compiler/aot/cli/SingleAOTOptionTest.java: check if specifying only one aot option handled properly
      compiler/aot/cli/jaotc/AtFileTest.java: check at-file jaotc support
      compiler/aot/cli/jaotc/CompileAbsoluteDirectoryTest.java: check jaotc can compile directory with classes where directory is specified by absolute path
      compiler/aot/cli/jaotc/CompileClassTest.java: check jaotc can compile class
      compiler/aot/cli/jaotc/CompileClassWithDebugTest.java: check that jaotc can compile a class with a --debug flag
      compiler/aot/cli/jaotc/CompileDirectoryTest.java: check jaotc can compile directory with classes where directory is specified by relative path
      compiler/aot/cli/jaotc/CompileJarTest.java: check jaotc can compile jar
      compiler/aot/cli/jaotc/CompileModuleTest.java: check jaotc can compile module
      compiler/aot/cli/jaotc/IgnoreErrorsTest.java:
      compiler/aot/cli/jaotc/ListOptionTest.java: check jaotc can use --compile-commands option successfully and respective compileCommand is applied
      compiler/aot/cli/jaotc/ListOptionWrongFileTest.java: check jaotc can handle incorrect --compile-commands file
      compiler/aot/fingerprint/SelfChanged.java: AOT methods should be swept if a super class has changed.
      compiler/aot/fingerprint/SelfChangedCDS.java: AOT methods should be swept if a super class has changed (with CDS).
      compiler/aot/fingerprint/SuperChanged.java: AOT methods should be swept if a super class has changed.
      compiler/aot/verification/ClassAndLibraryNotMatchTest.java: check if class and aot library are properly bound to each other
      compiler/aot/verification/vmflags/NotTrackedFlagTest.java: check if some not aot-related vm flag change doesn't affect aot library loading
      compiler/aot/verification/vmflags/TrackedFlagTest.java: check if tracked flag UseCompressedOops is controlled properly
      compiler/jvmci/JVM_GetJVMCIRuntimeTest.java:
      compiler/jvmci/SecurityRestrictionsTest.java:
      compiler/jvmci/TestJVMCIPrintProperties.java: Ensure -XX:-JVMCIPrintProperties can be enabled and successfully prints expected output to stdout.
      compiler/jvmci/compilerToVM/AllocateCompileIdTest.java:
      compiler/jvmci/compilerToVM/AsResolvedJavaMethodTest.java:
      compiler/jvmci/compilerToVM/CollectCountersTest.java:
      compiler/jvmci/compilerToVM/DebugOutputTest.java:
      compiler/jvmci/compilerToVM/DisassembleCodeBlobTest.java:
      compiler/jvmci/compilerToVM/DoNotInlineOrCompileTest.java:
      compiler/jvmci/compilerToVM/FindUniqueConcreteMethodTest.java:
      compiler/jvmci/compilerToVM/GetBytecodeTest.java:
      compiler/jvmci/compilerToVM/GetClassInitializerTest.java:
      compiler/jvmci/compilerToVM/GetExceptionTableTest.java:
      compiler/jvmci/compilerToVM/GetImplementorTest.java:
      compiler/jvmci/compilerToVM/GetLineNumberTableTest.java:
      compiler/jvmci/compilerToVM/GetLocalVariableTableTest.java:
      compiler/jvmci/compilerToVM/GetMaxCallTargetOffsetTest.java:
      compiler/jvmci/compilerToVM/GetStackTraceElementTest.java:
      compiler/jvmci/compilerToVM/GetSymbolTest.java:
      compiler/jvmci/compilerToVM/GetVtableIndexForInterfaceTest.java:
      compiler/jvmci/compilerToVM/HasCompiledCodeForOSRTest.java:
      compiler/jvmci/compilerToVM/HasFinalizableSubclassTest.java:
      compiler/jvmci/compilerToVM/HasNeverInlineDirectiveTest.java:
      compiler/jvmci/compilerToVM/IsCompilableTest.java:
      compiler/jvmci/compilerToVM/IsMatureTest.java:
      compiler/jvmci/compilerToVM/IsMatureVsReprofileTest.java:
      compiler/jvmci/compilerToVM/LookupKlassInPoolTest.java: Testing compiler.jvmci.CompilerToVM.lookupKlassInPool method
      compiler/jvmci/compilerToVM/LookupKlassRefIndexInPoolTest.java:
      compiler/jvmci/compilerToVM/LookupMethodInPoolTest.java:
      compiler/jvmci/compilerToVM/LookupNameAndTypeRefIndexInPoolTest.java:
      compiler/jvmci/compilerToVM/LookupNameInPoolTest.java:
      compiler/jvmci/compilerToVM/LookupSignatureInPoolTest.java:
      compiler/jvmci/compilerToVM/LookupTypeTest.java:
      compiler/jvmci/compilerToVM/MaterializeVirtualObjectTest.java:
      compiler/jvmci/compilerToVM/MethodIsIgnoredBySecurityStackWalkTest.java:
      compiler/jvmci/compilerToVM/ReadConfigurationTest.java:
      compiler/jvmci/compilerToVM/ReprofileTest.java:
      compiler/jvmci/compilerToVM/ResolveFieldInPoolTest.java:
      compiler/jvmci/compilerToVM/ResolveMethodTest.java:
      compiler/jvmci/compilerToVM/ResolvePossiblyCachedConstantInPoolTest.java:
      compiler/jvmci/compilerToVM/ResolveTypeInPoolTest.java: Testing compiler.jvmci.CompilerToVM.resolveTypeInPool method
      compiler/jvmci/compilerToVM/ShouldDebugNonSafepointsTest.java:
      compiler/jvmci/compilerToVM/ShouldInlineMethodTest.java:
      compiler/jvmci/errors/TestInvalidCompilationResult.java:
      compiler/jvmci/errors/TestInvalidDebugInfo.java:
      compiler/jvmci/errors/TestInvalidOopMap.java:
      compiler/jvmci/events/JvmciNotifyBootstrapFinishedEventTest.java:
      compiler/jvmci/events/JvmciNotifyInstallEventTest.java:
      compiler/jvmci/events/JvmciShutdownEventTest.java:
      compiler/jvmci/jdk.vm.ci.code.test/src/jdk/vm/ci/code/test/DataPatchTest.java:
      compiler/jvmci/jdk.vm.ci.code.test/src/jdk/vm/ci/code/test/InterpreterFrameSizeTest.java:
      compiler/jvmci/jdk.vm.ci.code.test/src/jdk/vm/ci/code/test/MaxOopMapStackOffsetTest.java:
      compiler/jvmci/jdk.vm.ci.code.test/src/jdk/vm/ci/code/test/NativeCallTest.java:
      compiler/jvmci/jdk.vm.ci.code.test/src/jdk/vm/ci/code/test/SimpleCodeInstallationTest.java:
      compiler/jvmci/jdk.vm.ci.code.test/src/jdk/vm/ci/code/test/SimpleDebugInfoTest.java:
      compiler/jvmci/jdk.vm.ci.code.test/src/jdk/vm/ci/code/test/VirtualObjectDebugInfoTest.java:
      compiler/jvmci/jdk.vm.ci.hotspot.test/src/jdk/vm/ci/hotspot/test/HotSpotConstantReflectionProviderTest.java:
      compiler/jvmci/jdk.vm.ci.hotspot.test/src/jdk/vm/ci/hotspot/test/MemoryAccessProviderTest.java:
      compiler/jvmci/jdk.vm.ci.hotspot.test/src/jdk/vm/ci/hotspot/test/MethodHandleAccessProviderTest.java:
      compiler/jvmci/jdk.vm.ci.runtime.test/src/jdk/vm/ci/runtime/test/ConstantTest.java:
      compiler/jvmci/jdk.vm.ci.runtime.test/src/jdk/vm/ci/runtime/test/RedefineClassTest.java:
      compiler/jvmci/jdk.vm.ci.runtime.test/src/jdk/vm/ci/runtime/test/ResolvedJavaTypeResolveConcreteMethodTest.java:
      compiler/jvmci/jdk.vm.ci.runtime.test/src/jdk/vm/ci/runtime/test/ResolvedJavaTypeResolveMethodTest.java:
      compiler/jvmci/jdk.vm.ci.runtime.test/src/jdk/vm/ci/runtime/test/TestConstantReflectionProvider.java:
      compiler/jvmci/jdk.vm.ci.runtime.test/src/jdk/vm/ci/runtime/test/TestJavaField.java:
      compiler/jvmci/jdk.vm.ci.runtime.test/src/jdk/vm/ci/runtime/test/TestJavaMethod.java:
      compiler/jvmci/jdk.vm.ci.runtime.test/src/jdk/vm/ci/runtime/test/TestJavaType.java:
      compiler/jvmci/jdk.vm.ci.runtime.test/src/jdk/vm/ci/runtime/test/TestMetaAccessProvider.java:
      compiler/jvmci/jdk.vm.ci.runtime.test/src/jdk/vm/ci/runtime/test/TestResolvedJavaType.java:
      compiler/jvmci/meta/StableFieldTest.java:
      runtime/InvocationTests/invocationGraalTests.java: Run invocation tests against Graal compiler
      -------------------------------------

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                jiefu Jie Fu
                Reporter:
                jiefu Jie Fu
              • Votes:
                0 Vote for this issue
                Watchers:
                2 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: