JDK-8271080 : 3 gtest/LargePageGtests.java subtests fail with SIGSEGV in AccessInternal::PostRuntimeDispatch
  • Type: Bug
  • Component: hotspot
  • Sub-Component: runtime
  • Affected Version: 18
  • Priority: P4
  • Status: Resolved
  • Resolution: Cannot Reproduce
  • OS: linux
  • CPU: x86_64
  • Submitted: 2021-07-21
  • Updated: 2022-12-07
  • Resolved: 2021-08-30
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 18
18Resolved
Related Reports
Relates :  
Description
The following three tests failed in the JDK18 CI with UT enabled:

gtest/LargePageGtests.java#use-large-pages
gtest/LargePageGtests.java#use-large-pages-sysV
gtest/LargePageGtests.java#use-large-pages-1G

Here's a log file snippet from LargePageGtests.java#use-large-pages:

[----------] Global test environment tear-down
[==========] 35 tests from 3 test cases ran. (1182 ms total)
[  PASSED  ] 35 tests.
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x00007f3a63f54720, pid=29433, tid=29511
#
# JRE version: Java(TM) SE Runtime Environment ((uninitialized)) (build 18-ea+6-203)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (18-ea+6-203, mixed mode, tiered, compressed oops, compressed class ptrs, g1 gc, linux-amd64)
# Problematic frame:
# V  [libjvm.so+0x6f0720]  AccessInternal::PostRuntimeDispatch<G1BarrierSet::AccessBarrier<1335398ul, G1BarrierSet>, (AccessInternal::BarrierType)3, 1335398ul>::oop_access_barrier(oopDesc*, long)+0x0
#
# 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/28992c6d-c35d-42fa-8099-898223bf183b-S25569/frameworks/1735e8a2-a1db-478c-8104-60c8b0af87dd-0196/executors/4bbe97e3-8e8a-4b73-95b7-38299a35deda/runs/d75f3535-3654-460d-881d-6ee6bf4257c5/testoutput/test-support/jtreg_open_test_hotspot_jtreg_tier1_common/scratch/3/core.29433)
#
# An error report file with more information is saved as:
# /opt/mach5/mesos/work_dir/slaves/28992c6d-c35d-42fa-8099-898223bf183b-S25569/frameworks/1735e8a2-a1db-478c-8104-60c8b0af87dd-0196/executors/4bbe97e3-8e8a-4b73-95b7-38299a35deda/runs/d75f3535-3654-460d-881d-6ee6bf4257c5/testoutput/test-support/jtreg_open_test_hotspot_jtreg_tier1_common/scratch/3/hs_err_pid29433.log
#
# If you would like to submit a bug report, please visit:
#   https://bugreport.java.com/bugreport/crash.jsp
#

[2021-07-10T18:35:27.430574380Z] Waiting for completion for process 29433
[2021-07-10T18:35:27.437665972Z] Waiting for completion finished for process 29433
----------System.err:(12/722)----------
java.lang.AssertionError: gtest execution failed; exit code = 134.
	at GTestWrapper.main(GTestWrapper.java:98)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at com.sun.javatest.regtest.agent.MainActionHelper$AgentVMRunnable.run(MainActionHelper.java:312)
	at java.base/java.lang.Thread.run(Thread.java:833)


The other two subtests have similar snippets in their log files.


Here's the crashing thread from LargePageGtests.java#use-large-pages:

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

Current thread (0x0000557020ae7c00):  JavaThread "UsageTracker" daemon [_thread_in_vm, id=29511, stack(0x00007f3a28cf5000,0x00007f3a28df6000)]

Stack: [0x00007f3a28cf5000,0x00007f3a28df6000],  sp=0x00007f3a28def058,  free space=1000k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [libjvm.so+0x6f0720]  AccessInternal::PostRuntimeDispatch<G1BarrierSet::AccessBarrier<1335398ul, G1BarrierSet>, (AccessInternal::BarrierType)3, 1335398ul>::oop_access_barrier(oopDesc*, long)+0x0
V  [libjvm.so+0xad964b]  java_lang_Throwable::fill_in_stack_trace(Handle, methodHandle const&)+0x2b
V  [libjvm.so+0xb8dfcb]  JVM_FillInStackTrace+0xeb
C  [libjava.so+0x12f82]  Java_java_lang_Throwable_fillInStackTrace+0x12
C  0x00007f3a4c0e153a

[error occurred during error reporting (printing native stack), id 0xb, SIGSEGV (0xb) at pc=0x00007f3a641c729b]

Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
C  0x00007f3a4c0e150b

[error occurred during error reporting (printing Java stack), id 0xb, SIGSEGV (0xb) at pc=0x00007f3a641c729b]


siginfo: si_signo: 11 (SIGSEGV), si_code: 1 (SEGV_MAPERR), si_addr: 0x0000000000000010


The other two subtests have similar crashing thread snippets.
Comments
We have no machines with large page support available in mach5, and the original failure logs are no longer available so we can't see which machines they used. The failures are not reproducing in mach5 on UT enabled machines, so closing as "not reproducible"
30-08-2021

This seems likely to be a case of JDK-8263567. The Gtests are tearing down the VM but the UT thread is still trying to execute and it hits nested failures that lead to the crash. Gtests are not normal/realistic executions of the VM. It makes no sense to me to enable UT with gtests.
29-07-2021

ILW = HLM = P3
27-07-2021