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

RunThese24H.java failed with EXCEPTION_ACCESS_VIOLATION in java_lang_Thread::get_thread_status

    XMLWordPrintable

    Details

    • Subcomponent:
    • Resolved In Build:
      b09
    • CPU:
      x86_64
    • OS:
      windows

      Backports

        Description

        The following test failed in the JDK18 CI:

        applications/runthese/RunThese24H.java

        Here's a snippet from the log file:

        [stress.process.out] testReplacementAfterExchange: Passed. OKAY
        [stress.process.out] testTimedExchange_InterruptedException: Passed. OKAY
        [stress.process.out] java.lang.NullPointerException: Cannot invoke "String.startsWith(String)" because the return value of "java.lang.management.ThreadInfo.getLockName()" is null
        [stress.process.out] at javasoft.sqe.tests.api.java.util.concurrent.JSR166TestCase.dumpTestThreads(JSR166TestCase.java:659)
        [stress.process.out] at javasoft.sqe.tests.api.java.util.concurrent.JSR166TestCase.threadRecordFailure(JSR166TestCase.java:320)
        [stress.process.out] at javasoft.sqe.tests.api.java.util.concurrent.JSR166TestCase.threadFail(JSR166TestCase.java:399)
        [stress.process.out] at javasoft.sqe.tests.api.java.util.concurrent.JSR166TestCase.awaitTermination(JSR166TestCase.java:1045)
        [stress.process.out] at javasoft.sqe.tests.api.java.util.concurrent.JSR166TestCase.awaitTermination(JSR166TestCase.java:1056)
        [stress.process.out] at javasoft.sqe.tests.api.java.util.concurrent.ExchangerTest.testExchange(ExchangerTest.java:49)
        [stress.process.out] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        [stress.process.out] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        [stress.process.out] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        [stress.process.out] at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        [stress.process.out] at javasoft.sqe.tests.api.junit.TestCase.invokeTestCase(TestCase.java:50)
        [stress.process.out] at javasoft.sqe.javatest.lib.MultiTest.run(MultiTest.java:193)
        [stress.process.out] at javasoft.sqe.javatest.lib.MultiTest.run(MultiTest.java:125)
        [stress.process.out] at javasoft.sqe.tests.api.java.util.concurrent.ExchangerTest.main(ExchangerTest.java:27)
        [stress.process.out] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        [stress.process.out] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        [stress.process.out] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        [stress.process.out] at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        [stress.process.out] at applications.kitchensink.process.stress.modules.JckStressModule$TestRunner$1.run(JckStressModule.java:275)
        [stress.process.out] testExchange: Failed. Test case throws exception: java.lang.NullPointerException: Cannot invoke "String.startsWith(String)" because the return value of "java.lang.management.ThreadInfo.getLockName()" is null
        [stress.process.out] testSpliterator_characteristics: Passed. OKAY
        [stress.process.out] testSpliterator_getComparator: Passed. OKAY
        [stress.process.out] testNanoTime: Failed. tearDown failed: java.lang.NullPointerException: Cannot invoke "String.startsWith(String)" because the return value of "java.lang.management.ThreadInfo.getLockName()" is null
        [stress.process.out] testCallable3: Passed. OKAY
        [stress.process.out] testCallableNPE1: Passed. OKAY
        [stress.process.out] testNewCachedThreadPool1: Passed. OKAY
        [stress.process.out] testNewSingleThreadExecutor3: Passed. OKAY
        [stress.process.out] testPrivilegedCallableWithPrivs: Passed. OKAY
        [stress.process.out] testNewScheduledThreadPool: Passed. OKAY
        [stress.process.out] testTimedCallable: Passed. OKAY
        [stress.process.out] testCallable1: Passed. OKAY
        [stress.process.out] testCallableNPE4: Passed. OKAY
        [stress.process.out] testCallableNPE3: Passed. OKAY
        [stress.process.out] testCallable4: Passed. OKAY
        [stress.process.out] testCallable2: Passed. OKAY
        [stress.process.out] testCallableNPE2: Passed. OKAY
        [stress.process.out] testCreatePrivilegedCallableUsingCCLWithNoPrivs: Failed. tearDown failed: java.lang.NullPointerException: Cannot invoke "String.startsWith(String)" because the return value of "java.lang.management.ThreadInfo.getLockName()" is null
        [stress.process.out] testUnconfigurableScheduledExecutorServiceNPE: Failed. tearDown failed: java.lang.NullPointerException: Cannot invoke "String.startsWith(String)" because the return value of "java.lang.management.ThreadInfo.getLockName()" is null
        [stress.process.out] testNewFixedThreadPool4: Passed. OKAY
        [stress.process.out] testNewSingleThreadScheduledExecutor: Passed. OKAY
        [stress.process.out] testUnconfigurableExecutorServiceNPE: Passed. OKAY
        [stress.process.out] testPrivilegedCallableUsingCCLWithPrivs: Passed. OKAY
        [stress.process.out] java.lang.NullPointerException: Cannot invoke "String.startsWith(String)" because the return value of "java.lang.management.ThreadInfo.getLockName()" is null
        [stress.process.out] at javasoft.sqe.tests.api.java.util.concurrent.JSR166TestCase.dumpTestThreads(JSR166TestCase.java:659)
        [stress.process.out] at javasoft.sqe.tests.api.java.util.concurrent.JSR166TestCase.threadRecordFailure(JSR166TestCase.java:320)
        [stress.process.out] at javasoft.sqe.tests.api.java.util.concurrent.JSR166TestCase.threadUnexpectedException(JSR166TestCase.java:510)
        [stress.process.out] at javasoft.sqe.tests.api.java.util.concurrent.JSR166TestCase.await(JSR166TestCase.java:1217)
        [stress.process.out] at javasoft.sqe.tests.api.java.util.concurrent.JSR166TestCase.await(JSR166TestCase.java:1222)
        [stress.process.out] at javasoft.sqe.tests.api.java.util.concurrent.ExecutorsTest.testDefaultThreadFactory(ExecutorsTest.java:332)
        [stress.process.out] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        [stress.process.out] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        [stress.process.out] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        [stress.process.out] at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        [stress.process.out] at javasoft.sqe.tests.api.junit.TestCase.invokeTestCase(TestCase.java:50)
        [stress.process.out] at javasoft.sqe.javatest.lib.MultiTest.run(MultiTest.java:193)
        [stress.process.out] at javasoft.sqe.javatest.lib.MultiTest.run(MultiTest.java:125)
        [stress.process.out] at javasoft.sqe.tests.api.java.util.concurrent.ExecutorsTest.main(ExecutorsTest.java:38)
        [stress.process.out] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        [stress.process.out] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        [stress.process.out] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        [stress.process.out] at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        [stress.process.out] at applications.kitchensink.process.stress.modules.JckStressModule$TestRunner$1.run(JckStressModule.java:275)
        [stress.process.out] testTwoParties: Passed. OKAY
        [stress.process.out] testResetAfterCommandException: Passed. OKAY
        [stress.process.out] testMoreTasksThanParties: Passed. OKAY
        [stress.process.out] testAwait5_Timeout_BrokenBarrier: Passed. OKAY
        [stress.process.out] testReset_NoBrokenBarrier: Passed. OKAY
        [stress.process.out] testConstructor2: Passed. OKAY
        [stress.process.out] testConstructor1: Passed. OKAY
        [stress.process.out] testAwait2_Interrupted_BrokenBarrier: Passed. OKAY
        [stress.process.out] testAwait1_Interrupted_BrokenBarrier: Passed. OKAY
        [stress.process.out] testReset_Leakage: Passed. OKAY
        [stress.process.out] testGetParties: Passed. OKAY
        [stress.process.out] testSingleParty: Passed. OKAY
        [stress.process.out] testBarrierAction: Passed. OKAY
        [stress.process.out] testResetAfterTimeout: Passed. OKAY
        [stress.process.out] testAwait3_TimeoutException: Passed. OKAY
        [stress.process.out] testAwait4_Timeout_BrokenBarrier: Passed. OKAY
        [stress.process.out] testReset_BrokenBarrier: Passed. OKAY
        [stress.process.out] testResetAfterInterrupt: Failed. tearDown failed: java.lang.NullPointerException: Cannot invoke "String.startsWith(String)" because the return value of "java.lang.management.ThreadInfo.getLockName()" is null
        [stress.process.out] java.lang.NullPointerException: Cannot invoke "String.startsWith(String)" because the return value of "java.lang.management.ThreadInfo.getLockName()" is null
        [stress.process.out] at javasoft.sqe.tests.api.java.util.concurrent.JSR166TestCase.dumpTestThreads(JSR166TestCase.java:659)
        [stress.process.out] at javasoft.sqe.tests.api.java.util.concurrent.JSR166TestCase.threadRecordFailure(JSR166TestCase.java:320)
        [stress.process.out] at javasoft.sqe.tests.api.java.util.concurrent.JSR166TestCase.threadFail(JSR166TestCase.java:399)
        [stress.process.out] at javasoft.sqe.tests.api.java.util.concurrent.JSR166TestCase.awaitTermination(JSR166TestCase.java:1045)
        [stress.process.out] at javasoft.sqe.tests.api.java.util.concurrent.JSR166TestCase.awaitTermination(JSR166TestCase.java:1056)
        [stress.process.out] at javasoft.sqe.tests.api.java.util.concurrent.CyclicBarrierTest.testResetWithoutBreakage(CyclicBarrierTest.java:382)
        [stress.process.out] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        [stress.process.out] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        [stress.process.out] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        [stress.process.out] at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        [stress.process.out] at javasoft.sqe.tests.api.junit.TestCase.invokeTestCase(TestCase.java:50)
        [stress.process.out] at javasoft.sqe.javatest.lib.MultiTest.run(MultiTest.java:193)
        [stress.process.out] at javasoft.sqe.javatest.lib.MultiTest.run(MultiTest.java:125)
        [stress.process.out] at javasoft.sqe.tests.api.java.util.concurrent.CyclicBarrierTest.main(CyclicBarrierTest.java:33)
        [stress.process.out] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        [stress.process.out] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        [stress.process.out] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        [stress.process.out] at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        [stress.process.out] at applications.kitchensink.process.stress.modules.JckStressModule$TestRunner$1.run(JckStressModule.java:275)
        [stress.process.out] testResetWithoutBreakage: Failed. Test case throws exception: java.lang.NullPointerException: Cannot invoke "String.startsWith(String)" because the return value of "java.lang.management.ThreadInfo.getLockName()" is null
        [stress.process.out] testGetAndSetDefaultUncaughtExceptionHandler: Failed. tearDown failed: java.lang.NullPointerException: Cannot invoke "String.startsWith(String)" because the return value of "java.lang.management.ThreadInfo.getLockName()" is null
        [stress.process.out] testGetAndSetUncaughtExceptionHandler: Failed. tearDown failed: java.lang.NullPointerException: Cannot invoke "String.startsWith(String)" because the return value of "java.lang.management.ThreadInfo.getLockName()" is null
        [stress.process.out] testDefaultThreadFactory: Failed. Test case throws exception: java.lang.NullPointerException: Cannot invoke "String.startsWith(String)" because the return value of "java.lang.management.ThreadInfo.getLockName()" is null
        [stress.process.out] java.lang.NullPointerException: Cannot invoke "String.startsWith(String)" because the return value of "java.lang.management.ThreadInfo.getLockName()" is null
        [stress.process.out] at javasoft.sqe.tests.api.java.util.concurrent.JSR166TestCase.dumpTestThreads(JSR166TestCase.java:659)
        [stress.process.out] at javasoft.sqe.tests.api.java.util.concurrent.JSR166TestCase.threadRecordFailure(JSR166TestCase.java:320)
        [stress.process.out] at javasoft.sqe.tests.api.java.util.concurrent.JSR166TestCase.threadUnexpectedException(JSR166TestCase.java:510)
        [stress.process.out] at javasoft.sqe.tests.api.java.util.concurrent.JSR166TestCase$CheckedRunnable.run(JSR166TestCase.java:1068)
        [stress.process.out] at javasoft.sqe.tests.api.java.util.concurrent.JSR166TestCase.runWithSecurityManagerWithPermissions(JSR166TestCase.java:816)
        [stress.process.out] at javasoft.sqe.tests.api.java.util.concurrent.JSR166TestCase.runWithPermissions(JSR166TestCase.java:788)
        [stress.process.out] at javasoft.sqe.tests.api.java.util.concurrent.JSR166TestCase.runWithoutPermissions(JSR166TestCase.java:828)
        [stress.process.out] at javasoft.sqe.tests.api.java.util.concurrent.ExecutorsTest.testPrivilegedCallableWithNoPrivs(ExecutorsTest.java:455)
        [stress.process.out] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        [stress.process.out] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        [stress.process.out] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        [stress.process.out] at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        [stress.process.out] at javasoft.sqe.tests.api.junit.TestCase.invokeTestCase(TestCase.java:50)
        [stress.process.out] at javasoft.sqe.javatest.lib.MultiTest.run(MultiTest.java:193)
        [stress.process.out] at javasoft.sqe.javatest.lib.MultiTest.run(MultiTest.java:125)
        [stress.process.out] at javasoft.sqe.tests.api.java.util.concurrent.ExecutorsTest.main(ExecutorsTest.java:38)
        [stress.process.out] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        [stress.process.out] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        [stress.process.out] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        [stress.process.out] at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        [stress.process.out] at applications.kitchensink.process.stress.modules.JckStressModule$TestRunner$1.run(JckStressModule.java:275)
        [stress.process.out] #
        [stress.process.out] # A fatal error has been detected by the Java Runtime Environment:
        [stress.process.out] #
        [stress.process.out] # EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x00007ffbc228d1d7, pid=49332, tid=9016
        [stress.process.out] #
        [stress.process.out] # JRE version: Java(TM) SE Runtime Environment (18.0+5) (build 18-ea+5-146)
        [stress.process.out] # Java VM: Java HotSpot(TM) 64-Bit Server VM (18-ea+5-146, mixed mode, sharing, tiered, compressed oops, compressed class ptrs, g1 gc, windows-amd64)
        [stress.process.out] # Problematic frame:
        [stress.process.out] # V [jvm.dll+0x38d1d7] java_lang_Thread::get_thread_status+0x7
        [stress.process.out] #
        [stress.process.out] # No core dump will be written. Minidumps are not enabled by default on client versions of Windows
        [stress.process.out] #
        [stress.process.out] # JFR recording file will be written. Location: T:\\testoutput\\test-support\\jtreg_closed_test_hotspot_jtreg_applications_runthese_RunThese24H_java\\scratch\\0\\hs_err_pid49332.jfr
        [stress.process.out] #
        [stress.process.out] Unsupported internal testing APIs have been used.
        [stress.process.out]
        [stress.process.out] # An error report file with more information is saved as:
        [stress.process.out] # T:\\testoutput\\test-support\\jtreg_closed_test_hotspot_jtreg_applications_runthese_RunThese24H_java\\scratch\\0\\hs_err_pid49332.log


        Please note that the test was reporting NULL return values from
        java.lang.management.ThreadInfo.getLockName() before the
        EXCEPTION_ACCESS_VIOLATION crash. It is possible that the
        code that is calling ThreadInfo.getLockName() is not properly coded
        to handle NULL return values. ThreadInfo.getLockName() is racy
        with respect to thread exit so it is possible for the target thread to
        exit while the ThreadInfo.getLockName() query is running. In that
        case, the API is supposed to return NULL.

        Here's the crashing thread's stack:

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

        Current thread (0x000001c75b74c810): VMThread "VM Thread" [stack: 0x0000000f91400000,0x0000000f91500000] [id=9016]

        Stack: [0x0000000f91400000,0x0000000f91500000], sp=0x0000000f914ff0e8, free space=1020k
        Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
        V [jvm.dll+0x38d1d7] java_lang_Thread::get_thread_status+0x7 (javaClasses.cpp:1836)


        siginfo: EXCEPTION_ACCESS_VIOLATION (0xc0000005), reading address 0x0000000000000028

        It's the VM thread that's crashing here. I suspect a NULL ptr
        has been passed in via some API. The VMThread usually
        protects itself against such things so I'm not sure what
        happened here.

          Attachments

            Issue Links

              Activity

                People

                Assignee:
                dholmes David Holmes
                Reporter:
                dcubed Daniel Daugherty
                Votes:
                0 Vote for this issue
                Watchers:
                8 Start watching this issue

                  Dates

                  Created:
                  Updated:
                  Resolved: