dragonwell-releng / dragonwell-adoptium

0 stars 0 forks source link

【dragonwell21】在aarch64平台jdk/jfr/event/gc/collection下多个case在-Xcomp和-Xcomp -XX:TieredStopAtLevel=1选项下,概率性失败 #270

Closed owanqian closed 10 months ago

owanqian commented 10 months ago

https://tone.aliyun-inc.com/ws/xesljfzh/test_result/244257?tab=3

【环境准备】

wget -O binary.tar.gz https://dragonwell.oss-cn-shanghai.aliyuncs.com/test-59/OpenJDK21U-jdk_aarch64_linux_dragonwell_2023-11-02-02-07.tar.gz
wget -O test-image.tar.gz https://dragonwell.oss-cn-shanghai.aliyuncs.com/test-59/OpenJDK21U-testimage_aarch64_linux_dragonwell_2023-11-02-02-07.tar.gz
wget -O jtreg.zip https://compiler-ci-bucket.oss-cn-hangzhou.aliyuncs.com/jdk/tools/jtreg-7.3.1.zip
git clone https://github.com/dragonwell-project/dragonwell21.git -b wip_dragonwell_standard_merge_branch jdk-repo

mkdir binary-download 
tar xzvf binary.tar.gz -C binary-download ; cd binary-download && export JAVA_HOME=$PWD ; export PATH=$JAVA_HOME/bin:$PATH ; export TEST_JDK_HOME=$JAVA_HOME &&cd -
make test-images ; tar xzvf test-image.tar.gz -C test-images
unzip jtreg.zip; cd jtreg ; export JT_HOME=$PWD ; export PATH=$PWD/bin:$PATH ; cd -

test=\
jdk-repo/test/jdk/jdk/jfr/event/gc/collection/TestGCCauseWithG1FullCollection.java

args='-Xcomp -XX:TieredStopAtLevel=1'
native='-nativepath:./test-images/hotspot/jtreg/native'
rm -rf jt-work; mkdir jt-work; nohup time seq 10000 | xargs -i -n 1 -P `nproc` bash -c "jtreg -w tmp -nr -v:fail,error $native  $args $test &> jt-work/test_{} " &

-Xcomp选项下: jdk-repo/test/jdk/jdk/jfr/event/gc/collection/TestGCCauseWithG1FullCollection.java 同样问题. jdk-repo/test/jdk/jdk/jfr/event/gc/collection/TestGCCauseWithG1ConcurrentMark.java 同样问题.

-Xcomp -XX:TieredStopAtLevel=1选项下: jdk-repo/test/jdk/jdk/jfr/event/gc/collection/TestGCCauseWithG1FullCollection.java 复现问题. 复现频率:458/4857 成功频率:1/4857 jdk-repo/test/jdk/jdk/jfr/event/gc/collection/TestGCCauseWithParallelOld.java 同样问题. jdk-repo/test/jdk/jdk/jfr/event/gc/collection/TestGCCauseWithSerial.java 同样问题.

【对比测试】

dragonwell21 release无

temurin21 同样问题 wget https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.1%2B12/OpenJDK21U-jdk_aarch64_linux_hotspot_21.0.1_12.tar.gz

openjdk version "21.0.1" 2023-10-17 LTS
OpenJDK Runtime Environment Temurin-21.0.1+12 (build 21.0.1+12-LTS)
OpenJDK 64-Bit Server VM Temurin-21.0.1+12 (build 21.0.1+12-LTS, mixed mode, sharing)
OpenJDK 64-Bit Server VM (21.0.1+12-LTS) for linux-aarch64 JRE (21.0.1+12-LTS), built on 2023-10-17T00:00:00Z by "admin" with gcc 11.2.0

【用例日志】

Tone完整日志:

ACTION: driver -- Failed. Execution failed: `main' threw exception: java.lang.RuntimeException: GC cause 'CodeCache GC Threshold' not in the valid causes[G1 Preventive Collection, G1 Compaction Pause, Metadata GC Threshold, GCLocker Initiated GC, G1 Evacuation Pause, System.gc()]: expected true, was false
REASON: User specified action: run driver jdk.jfr.event.gc.collection.TestGCCauseWithG1FullCollection
TIME:   3.746 seconds
messages:
command: driver jdk.jfr.event.gc.collection.TestGCCauseWithG1FullCollection
reason: User specified action: run driver jdk.jfr.event.gc.collection.TestGCCauseWithG1FullCollection
started: Thu Nov 16 20:15:19 CST 2023
Mode: othervm
Additional options from @modules: --add-modules jdk.jfr,java.management
finished: Thu Nov 16 20:15:23 CST 2023
elapsed time (seconds): 3.746
configuration:
Boot Layer
  add modules: jdk.jfr java.management

STDOUT:
Command line: [/tmp/tone/run/jtreg/binary-download/bin/java -cp /tmp/tone/run/jtreg/tmp/classes/jdk/jfr/event/gc/collection/TestGCCauseWithG1FullCollection.d:/tmp/tone/run/jtreg/jdk-repo/test/jdk/jdk/jfr/event/gc/collection:/tmp/tone/run/jtreg/tmp/classes/test/lib:/tmp/tone/run/jtreg/jdk-repo/test/lib:/tmp/tone/run/jtreg/tmp/classes/test/jdk:/tmp/tone/run/jtreg/jdk-repo/test/jdk:/tmp/tone/run/jtreg/jtreg/lib/javatest.jar:/tmp/tone/run/jtreg/jtreg/lib/jtreg.jar -Xcomp -XX:TieredStopAtLevel=1 -XX:+UseG1GC -Xmx100m -XX:+UnlockExperimentalVMOptions -XX:-UseFastUnorderedTimeStamps -Xlog:gc*=debug -XX:StartFlightRecording=settings=/tmp/tone/run/jtreg/jdk-repo/test/jdk/jdk/jfr/event/gc/collection/gc-testsettings.jfc,filename=G1FullCollection.jfr jdk.jfr.event.gc.collection.AppGCProvoker ]
[2023-11-16T12:15:19.472354953Z] Gathering output for process 1008473
[2023-11-16T12:15:22.757187881Z] Waiting for completion for process 1008473
[2023-11-16T12:15:22.757388557Z] Waiting for completion finished for process 1008473
Output and diagnostic info for process 1008473 was saved into 'pid-1008473-output.log'
[2023-11-16T12:15:22.764212758Z] Waiting for completion for process 1008473
[2023-11-16T12:15:22.764288997Z] Waiting for completion finished for process 1008473
Event: jdk.GarbageCollection {
  startTime = 20:15:21.799 (2023-11-16)
  duration = 10.8 ms
  gcId = 4
  name = "G1Old"
  cause = "CodeCache GC Threshold"
  sumOfPauses = 8.14 ms
  longestPause = 8.08 ms
  eventThread = "G1 Main Marker" (osThreadId = 1007326)
}

STDERR:
java.lang.RuntimeException: GC cause 'CodeCache GC Threshold' not in the valid causes[G1 Preventive Collection, G1 Compaction Pause, Metadata GC Threshold, GCLocker Initiated GC, G1 Evacuation Pause, System.gc()]: expected true, was false
        at jdk.test.lib.Asserts.fail(Asserts.java:594)
        at jdk.test.lib.Asserts.assertTrue(Asserts.java:486)
        at jdk.jfr.event.gc.collection.GCGarbageCollectionUtil.test(GCGarbageCollectionUtil.java:98)
        at jdk.jfr.event.gc.collection.TestGCCauseWithG1FullCollection.main(TestGCCauseWithG1FullCollection.java:45)
        at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
        at java.base/java.lang.reflect.Method.invoke(Method.java:580)
        at com.sun.javatest.regtest.agent.MainWrapper$MainTask.run(MainWrapper.java:138)
        at java.base/java.lang.Thread.run(Thread.java:1583)

JavaTest Message: Test threw exception: java.lang.RuntimeException: GC cause 'CodeCache GC Threshold' not in the valid causes[G1 Preventive Collection, G1 Compaction Pause, Metadata GC Threshold, GCLocker Initiated GC, G1 Evacuation Pause, System.gc()]: expected true, was false
JavaTest Message: shutting down test

STATUS:Failed.`main' threw exception: java.lang.RuntimeException: GC cause 'CodeCache GC Threshold' not in the valid causes[G1 Preventive Collection, G1 Compaction Pause, Metadata GC Threshold, GCLocker Initiated GC, G1 Evacuation Pause, System.gc()]: expected true, was false

【版本信息】

[root@iZbp1f3rms2wrmq4xy7eolZ jtreg]# uname -a ; cat /etc/os-release ; free -h; lscpu| head -n 25;java -version; java -Xinternalversion
Linux iZbp1f3rms2wrmq4xy7eolZ 5.10.134-15.an8.aarch64 #1 SMP Thu Jul 20 00:33:45 CST 2023 aarch64 aarch64 aarch64 GNU/Linux
NAME="Anolis OS"
VERSION="8.8"
ID="anolis"
ID_LIKE="rhel fedora centos"
VERSION_ID="8.8"
PLATFORM_ID="platform:an8"
PRETTY_NAME="Anolis OS 8.8"
ANSI_COLOR="0;31"
HOME_URL="https://openanolis.cn/"

              total        used        free      shared  buff/cache   available
Mem:           61Gi       4.3Gi        54Gi       0.0Ki       2.7Gi        56Gi
Swap:            0B          0B          0B
Architecture:        aarch64
Byte Order:          Little Endian
CPU(s):              32
On-line CPU(s) list: 0-31
Thread(s) per core:  1
Core(s) per socket:  32
Socket(s):           1
NUMA node(s):        1
Vendor ID:           ARM
BIOS Vendor ID:      Alibaba Cloud
Model:               0
Model name:          Neoverse-N2
BIOS Model name:     virt-rhel7.6.0
Stepping:            r0p0
CPU MHz:             3000.000
CPU max MHz:         3000.0000
CPU min MHz:         3000.0000
BogoMIPS:            100.00
L1d cache:           64K
L1i cache:           64K
L2 cache:            1024K
L3 cache:            65536K
NUMA node0 CPU(s):   0-31
Flags:               fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm ssbs sb dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh
openjdk version "21.0.1" 2023-10-17
OpenJDK Runtime Environment (Alibaba Dragonwell Standard Edition)-21.0.1.0.1+12-GA (build 21.0.1)
OpenJDK 64-Bit Server VM (Alibaba Dragonwell Standard Edition)-21.0.1.0.1+12-GA (build 21.0.1, mixed mode, sharing)
OpenJDK 64-Bit Server VM (21.0.1) for linux-aarch64 JRE (21.0.1), built on 2023-10-17T00:00:00Z by "dragonwell" with gcc 11.2.0
sendaoYan commented 10 months ago

https://github.com/dragonwell-project/dragonwell21/issues/5

sendaoYan commented 10 months ago

https://code.alibaba-inc.com/os-quality/tone-matrix/codereview/14702246