dragonwell-project / dragonwell8

Alibaba Dragonwell8 JDK
http://dragonwell-jdk.io
GNU General Public License v2.0
4.21k stars 497 forks source link

[upstream][dragonwell][standard][8.20.21][aarch64]javax/net/ssl/ServerName/SSLEngineExplorerMatchedSNI.java intermittent fails javax.net.ssl.SSLException: Tag mismatch! #678

Open sendaoYan opened 2 months ago

sendaoYan commented 2 months ago

http://ci.dragonwell-jdk.io/job/Test_openjdk8_dragonwell_extended.openjdk_aarch64_linux/170/console

【环境准备】

jtreg=oss://compiler-ci-bucket/jdk/tools/jtreg5.1-b01.zip
BINARY_URL=oss://dragonwell/8.20.21-test-dragonwell_standard/Alibaba_Dragonwell_Standard_8.20.21_aarch64_linux.tar.gz
JDK_REPO=https://codeup.aliyun.com/5f4e0dfe6207a1a8b17fa7cf/compiler-test/jdk8u.git
JDK_BRANCH=ajdk_ga-8.22.26

#下载解压jtreg,cd jtreg并配置
export JT_HOME=$PWD ; export PATH=$PWD/bin:$PATH
#下载解压jdk,cd <目录>并配置
export JAVA_HOME=$PWD ; export PATH=$JAVA_HOME/bin:$PATH ; export TEST_JDK_HOME=$JAVA_HOME
#下载jdk-repo
git clone https://${JDK_REPO} --depth 1 -b $JDK_BRANCH jdk-repo

#执行测试
rm -rf tmp ; nproc=`nproc` ; dir="jt-work" ; rm -rf $dir ; mkdir -p $dir ; time seq 10000 | xargs -i -n 1 -P  5 bash -c " \
 jtreg  -nr -v:fail,error -w tmp -timeoutFactor:4.0  -jdk:dragonwell-8.19.20   $args  $test \
&> $dir/test_{}.log ; grep 'Test results: passed: 1' -L $dir/test_{}.log "
#失败的case:
javax/net/ssl/ServerName/SSLEngineExplorerMatchedSNI.java

【测试分析】

执行来看,复现的概率为万分之5。

release dragwell8 同样问题:
https://dragonwell.oss-cn-shanghai.aliyuncs.com/8.19.20/Alibaba_Dragonwell_Extended_8.19.20_aarch64_linux.tar.gz

temurin 同样问题:
oss://compiler-ci-bucket/openjdk/jdk8u422-ga/OpenJDK8U-jdk_aarch64_linux_hotspot_8u422b05.tar.gz

【用例日志】

ACTION: main -- Failed. Execution failed: `main' threw exception: javax.net.ssl.SSLException: Tag mismatch!
REASON: User specified action: run main/othervm SSLEngineExplorerMatchedSNI www.example.com www\.example\.com
TIME:   0.399 seconds
messages:
command: main SSLEngineExplorerMatchedSNI www.example.com www\.example\.com
reason: User specified action: run main/othervm SSLEngineExplorerMatchedSNI www.example.com www\.example\.com
Mode: othervm [/othervm specified]
elapsed time (seconds): 0.399
configuration:
STDOUT:
resize destination buffer upto 16709 bytes for BUFFER_OVERFLOW
resize source buffer upto 16709 bytes for BUFFER_UNDERFLOW
Record version: TLSv1.2
Hello version: TLSv1.2
resize destination buffer upto 16709 bytes for BUFFER_OVERFLOW
resize destination buffer upto 16709 bytes for BUFFER_OVERFLOW
resize source buffer upto 16709 bytes for BUFFER_UNDERFLOW
STDERR:
javax.net.ssl.SSLException: Tag mismatch!
        at sun.security.ssl.Alert.createSSLException(Alert.java:133)
        at sun.security.ssl.TransportContext.fatal(TransportContext.java:331)
        at sun.security.ssl.TransportContext.fatal(TransportContext.java:274)
        at sun.security.ssl.TransportContext.fatal(TransportContext.java:269)
        at sun.security.ssl.SSLTransport.decode(SSLTransport.java:119)
        at sun.security.ssl.SSLEngineImpl.decode(SSLEngineImpl.java:588)
        at sun.security.ssl.SSLEngineImpl.readRecord(SSLEngineImpl.java:544)
        at sun.security.ssl.SSLEngineImpl.unwrap(SSLEngineImpl.java:411)
        at sun.security.ssl.SSLEngineImpl.unwrap(SSLEngineImpl.java:390)
        at javax.net.ssl.SSLEngine.unwrap(SSLEngine.java:626)
        at SSLEngineService.receive(SSLEngineService.java:167)
        at SSLEngineExplorerMatchedSNI.doServerSide(SSLEngineExplorerMatchedSNI.java:160)
        at SSLEngineExplorerMatchedSNI.startServer(SSLEngineExplorerMatchedSNI.java:369)
        at SSLEngineExplorerMatchedSNI.<init>(SSLEngineExplorerMatchedSNI.java:319)
        at SSLEngineExplorerMatchedSNI.main(SSLEngineExplorerMatchedSNI.java:300)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at com.sun.javatest.regtest.agent.MainWrapper$MainThread.run(MainWrapper.java:127)
        at java.lang.Thread.run(Thread.java:750)
Caused by: javax.crypto.AEADBadTagException: Tag mismatch!
        at com.sun.crypto.provider.GaloisCounterMode.decryptFinal(GaloisCounterMode.java:620)
        at com.sun.crypto.provider.CipherCore.finalNoPadding(CipherCore.java:1116)
        at com.sun.crypto.provider.CipherCore.fillOutputBuffer(CipherCore.java:1053)
        at com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:941)
        at com.sun.crypto.provider.AESCipher.engineDoFinal(AESCipher.java:491)
        at javax.crypto.CipherSpi.bufferCrypt(CipherSpi.java:779)
        at javax.crypto.CipherSpi.engineDoFinal(CipherSpi.java:730)
        at javax.crypto.Cipher.doFinal(Cipher.java:2463)
        at sun.security.ssl.SSLCipher$T13GcmReadCipherGenerator$GcmReadCipher.decrypt(SSLCipher.java:1880)
        at sun.security.ssl.SSLEngineInputRecord.decodeInputRecord(SSLEngineInputRecord.java:240)
        at sun.security.ssl.SSLEngineInputRecord.decode(SSLEngineInputRecord.java:197)
        at sun.security.ssl.SSLEngineInputRecord.decode(SSLEngineInputRecord.java:160)
        at sun.security.ssl.SSLTransport.decode(SSLTransport.java:109)
        ... 16 more

JavaTest Message: Test threw exception: javax.net.ssl.SSLException: Tag mismatch!
JavaTest Message: shutting down test

STATUS:Failed.`main' threw exception: javax.net.ssl.SSLException: Tag mismatch!
rerun:
cd /home/wb-wq628200/a8/tmp/scratch && \
HOME=/home/wb-wq628200 \
LANG=en_US.UTF-8 \
PATH=/bin:/usr/bin:/usr/sbin \
CLASSPATH=/home/wb-wq628200/a8/tmp/classes/javax/net/ssl/ServerName:/home/wb-wq628200/a8/jdk-repo/jdk/test/javax/net/ssl/ServerName:/home/wb-wq628200/a8/tmp/classes/javax/net/ssl/SSLEngine:/home/wb-wq628200/a8/jdk-repo/jdk/test/javax/net/ssl/SSLEngine:/home/wb-wq628200/a8/tmp/classes/javax/net/ssl/templates:/home/wb-wq628200/a8/jdk-repo/jdk/test/javax/net/ssl/templates:/home/wb-wq628200/a8/dragonwell-8.19.20/lib/tools.jar:/home/wb-wq628200/a8/jtreg/lib/javatest.jar:/home/wb-wq628200/a8/jtreg/lib/jtreg.jar \
    /home/wb-wq628200/a8/dragonwell-8.19.20/bin/java \
        -Dtest.vm.opts=-Xmixed \
        -Dtest.tool.vm.opts=-J-Xmixed \
        -Dtest.compiler.opts= \
        -Dtest.java.opts= \
        -Dtest.jdk=/home/wb-wq628200/a8/dragonwell-8.19.20 \
        -Dcompile.jdk=/home/wb-wq628200/a8/dragonwell-8.19.20 \
        -Dtest.timeout.factor=4.0 \
        -Dtest.root=/home/wb-wq628200/a8/jdk-repo/jdk/test \
        -Dtest.name=javax/net/ssl/ServerName/SSLEngineExplorerMatchedSNI.java \
        -Dtest.file=/home/wb-wq628200/a8/jdk-repo/jdk/test/javax/net/ssl/ServerName/SSLEngineExplorerMatchedSNI.java \
        -Dtest.src=/home/wb-wq628200/a8/jdk-repo/jdk/test/javax/net/ssl/ServerName \
        -Dtest.src.path=/home/wb-wq628200/a8/jdk-repo/jdk/test/javax/net/ssl/ServerName:/home/wb-wq628200/a8/jdk-repo/jdk/test/javax/net/ssl/SSLEngine:/home/wb-wq628200/a8/jdk-repo/jdk/test/javax/net/ssl/templates \
        -Dtest.classes=/home/wb-wq628200/a8/tmp/classes/javax/net/ssl/ServerName \
        -Dtest.class.path=/home/wb-wq628200/a8/tmp/classes/javax/net/ssl/ServerName:/home/wb-wq628200/a8/tmp/classes/javax/net/ssl/SSLEngine:/home/wb-wq628200/a8/tmp/classes/javax/net/ssl/templates \
        -Xmixed \
        com.sun.javatest.regtest.agent.MainWrapper /home/wb-wq628200/a8/tmp/javax/net/ssl/ServerName/SSLEngineExplorerMatchedSNI.d/main.0.jta www.example.com 'www\.example\.com'

TEST RESULT: Failed. Execution failed: `main' threw exception: javax.net.ssl.SSLException: Tag mismatch!

【版本信息】

测试机及其jdk环境信息

#uname -a ; cat /etc/os-release ; free -h; lscpu| head -n 25;./java -version; ./java -Xinternalversion
Linux CompilerTest-aarch64-2 5.10.134-16.1.al8.aarch64 #1 SMP Thu Dec 7 22:04:51 CST 2023 aarch64 aarch64 aarch64 GNU/Linux
NAME="Alibaba Cloud Linux"
VERSION="3 (Soaring Falcon)"
ID="alinux"
ID_LIKE="rhel fedora centos anolis"
VERSION_ID="3"
UPDATE_ID="9"
PLATFORM_ID="platform:al8"
PRETTY_NAME="Alibaba Cloud Linux 3 (Soaring Falcon)"
ANSI_COLOR="0;31"
HOME_URL="https://www.aliyun.com/"

              total        used        free      shared  buff/cache   available
Mem:          122Gi       1.9Gi        37Gi       1.0Mi        83Gi       119Gi
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
Model:               0
Model name:          Neoverse-N2
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 "1.8.0_412"
OpenJDK Runtime Environment (Alibaba Dragonwell Standard Edition 8.19.20) (build 1.8.0_412-b01)
OpenJDK 64-Bit Server VM (Alibaba Dragonwell Standard Edition 8.19.20) (build 25.412-b01, mixed mode)
OpenJDK 64-Bit Server VM (25.412-b01) for linux-aarch64 JRE (1.8.0_412-b01), built on Aug 19 2024 12:14:18 by "jenkins" with gcc 7.5.0
sendaoYan commented 2 months ago

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

sendaoYan commented 2 months ago

https://github.com/openjdk/jdk8u-dev/pull/567