eclipse-openj9 / openj9

Eclipse OpenJ9: A Java Virtual Machine for OpenJDK that's optimized for small footprint, fast start-up, and high throughput. Builds on Eclipse OMR (https://github.com/eclipse/omr) and combines with the Extensions for OpenJDK for OpenJ9 repo.
Other
3.29k stars 722 forks source link

[Windows IA32] 80 FVT_Serviceability.diagnostics.xdump_gpf_javacore.Mode121.1 gpf test failed Access Violations(s) detected in std_AnalyseDTFJJavacore.out #19729

Open JasonFengJ9 opened 5 months ago

JasonFengJ9 commented 5 months ago

Failure link

From an internal build(win10x64rtp-9-1):

java version "1.8.0_421"
Java(TM) SE Runtime Environment (build 8.0.9.0 - pwi3280sr9-20240606_01(SR9))
IBM J9 VM (build 2.9, JRE 1.8.0 Windows 10 x86-32-Bit 20240615_72921 (JIT enabled, AOT enabled)
OpenJ9   - 2c59d474217
OMR      - 36ba717
IBM      - 8eac2b8)
JCL - 20240513_01 based on Oracle jdk8u421-b05

Optional info

Failure output (captured from console output)

>> 2024 Tue Jun 18 00:02:42 gpf test failed...
>> 2024 Tue Jun 18 00:02:42 1 Access Violations(s) detected in file C:\temp\bld_73054\diagnostics.xdump_gpf_javacore\87060821\win10x64rtp-9-1-diagnostics_xdump-m121-20240618-000146\gpf\std_AnalyseDTFJJavacore.out

>> 2024 Tue Jun 18 00:02:42 The standard error output for this test was:
Unhandled exception
Type=Segmentation error vmState=0x00040000
J9Generic_Signal_Number=00000004 ExceptionCode=c0000005 ExceptionAddress=73732B9A ContextFlags=0001007f
Handler1=74ADCCE0 Handler2=73E77CA0 InaccessibleWriteAddress=00000000
EDI=259BFAA4 ESI=259BFA90 EAX=00000000 EBX=00000000
ECX=9CBE2CEC EDX=24C08E4E
EIP=73732B9A ESP=259BF8D0 EBP=259BF8D4 EFLAGS=00010202
GS=002B FS=0053 ES=002B DS=002B
Module=W:\javatest\HEAD_382595\test\SVT\ras\tools\native\bin\80\win_x86-32\xdump_event_generator.dll
Module_base_address=73730000 Offset_in_DLL=00002b9a
Target=2_90_20240617_73054 (Windows 10 10.0 build 19045)
CPU=x86 (4 logical CPUs) (0x1fff78000 RAM)
----------- Stack Backtrace -----------
_Java_tests_com_ibm_jtc_ras_runnable_ProvokeEvent_GenerateGPFEvent@8+0x3a (0x73732B9A [xdump_event_generator+0x2b9a])
ffi_call_win32+0x48 (win32.asm:978, 0x74B6DC24 [j9vm29+0x12dc24])
ffi_raw_call+0x73 (ffi.c:939, 0x74B6D3E3 [j9vm29+0x12d3e3])
?run@VM_DebugBytecodeInterpreterFull@@QAEIPAUJ9VMThread@@@Z+0x1273c (0x74A7144C [j9vm29+0x3144c])
_debugBytecodeLoopFull+0x83 (0x74A5ED03 [j9vm29+0x1ed03])
runJavaThread+0x1f5 (callin.cpp:682, 0x74AC5595 [j9vm29+0x85595])
javaProtectedThreadProc+0xa5 (vmthread.cpp:2129, 0x74B0FC15 [j9vm29+0xcfc15])
omrsig_protect+0x4f (omrsignal.c:166, 0x73E78CEF [j9prt29+0x18cef])
javaThreadProc+0x3b (vmthread.cpp:409, 0x74B0DDAB [j9vm29+0xcddab])
thread_wrapper+0xcc (omrthread.c:1733, 0x74E03A3C [J9THR29+0x3a3c])
_o_iswdigit+0x5f (0x77004F9F [ucrtbase+0x44f9f])
BaseThreadInitThunk+0x19 (0x752FFCC9 [KERNEL32+0x1fcc9])
RtlGetAppContainerNamedObjectPath+0x11e (0x771B80CE [ntdll+0x680ce])
RtlGetAppContainerNamedObjectPath+0xee (0x771B809E [ntdll+0x6809e])
---------------------------------------
JVMDUMP039I Processing dump event "gpf", detail "" at 2024/06/18 00:02:09 - please wait.
JVMDUMP032I JVM requested Java dump using 'C:\temp\bld_73054\diagnostics.xdump_gpf_javacore\87060821\win10x64rtp-9-1-diagnostics_xdump-m121-20240618-000146\gpf\expected_dumps\javacore.20240618.000209.1040.0001.txt' in response to an event
JVMDUMP010I Java dump written to C:\temp\bld_73054\diagnostics.xdump_gpf_javacore\87060821\win10x64rtp-9-1-diagnostics_xdump-m121-20240618-000146\gpf\expected_dumps\javacore.20240618.000209.1040.0001.txt
JVMDUMP013I Processed dump event "gpf", detail "".
De-reference a invalid pointer to generate a GPF Event
**************************************************************************
>> 2024 Tue Jun 18 00:02:42 Axxon_xdump.pl TEST SUMMARY - ALL TESTS FAILED

100x internal grinder - 56/100 failed

pshipton commented 5 months ago

The following perl code in lib/perl/common/automate.pm isn't working. The file contains Signal name: EXCEPTION_ACCESS_VIOLATION but it's not matching the check in the perl code, instead matching with $line =~ /ACCESS_VIOLATION/.

        if ($line =~ /^\s*Signal name: EXCEPTION_ACCESS_VIOLATION\s*$/)
        {
            # Ignore lines like this expected in the output of tests.com.ibm.jtc.ras.util.dtfj.DTFJJavacore.printProcessSignal().
        }
        elsif ( $line =~ /ACCESS_VIOLATION/ )
        {
            $a++;
        }
pshipton commented 5 months ago

Although this is Windows, where each machine has it's own copy of the test code. I'll check if a failing machine has an out of date copy of the code. For reference infrastructure/issues/9118