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

JVMCI_lock fails to get initialized when cds is disabled

    XMLWordPrintable

    Details

    • Subcomponent:
    • Resolved In Build:
      b20

      Backports

        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:
                3 Start watching this issue

                  Dates

                  Created:
                  Updated:
                  Resolved: