dragonwell-project / dragonwell8

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

【regress】-XX:-UseCompressedOops选项运行java/lang/ClassLoader/deadlock/GetResource.java用例随机超时 #484

Open sendaoYan opened 1 year ago

sendaoYan commented 1 year ago
"Thread-2" #25 prio=5 os_prio=0 tid=0x00007f4504006800 nid=0x172dc1 waiting for monitor entry [0x00007f45175cc000]
   java.lang.Thread.State: BLOCKED (on object monitor)
    at java.util.Hashtable.containsKey(Hashtable.java:335)
    - waiting to lock <0x00007f45b8010ce0> (a java.util.Properties)
    at com.alibaba.wisp.engine.WispConfiguration.<clinit>(WispConfiguration.java:85)
    at com.alibaba.wisp.engine.WispEngine.createTimerScheduler(WispEngine.java:109)
    at com.alibaba.wisp.engine.WispEngine.<clinit>(WispEngine.java:65)
    at sun.misc.Unsafe.unpark(Unsafe.java:999)
    at java.util.concurrent.locks.LockSupport.unpark(LockSupport.java:142)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer.unparkSuccessor(AbstractQueuedSynchronizer.java:668)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer.release(AbstractQueuedSynchronizer.java:1272)
    at java.util.concurrent.locks.ReentrantLock.unlock(ReentrantLock.java:457)
    at java.util.concurrent.CyclicBarrier.dowait(CyclicBarrier.java:261)
    at java.util.concurrent.CyclicBarrier.await(CyclicBarrier.java:362)
    at GetResource$2.run(GetResource.java:70)

"Thread-1" #24 prio=5 os_prio=0 tid=0x00007f4504005000 nid=0x172db3 in Object.wait() [0x00007f45176ce000]
   java.lang.Thread.State: RUNNABLE
    at sun.misc.Unsafe.park(Unsafe.java:1027)
    - parking to wait for  <0x00007f45b95e4e48> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:176)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2047)
    at java.util.concurrent.CyclicBarrier.dowait(CyclicBarrier.java:234)
    at java.util.concurrent.CyclicBarrier.await(CyclicBarrier.java:362)
    at GetResource$1.run(GetResource.java:50)
    - locked <0x00007f45b8010ce0> (a java.util.Properties)

"MainThread" #23 prio=5 os_prio=0 tid=0x00007f4e4c311800 nid=0x172d9f in Object.wait() [0x00007f45177ce000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0x00007f45b95e5a00> (a GetResource$1)
    at java.lang.Thread.join(Thread.java:1399)
    - locked <0x00007f45b95e5a00> (a GetResource$1)
    at java.lang.Thread.join(Thread.java:1473)
    at GetResource.run(GetResource.java:92)
    at GetResource.main(GetResource.java:106)
    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:855)

复现命令:

test=jdk/test/java/lang/ClassLoader/deadlock/GetResource.java
nproc=`nproc` ; dir="tmp-jtreg-"`basename $test .java` ; rm -rf $dir ; mkdir -p $dir ; time seq 500 | xargs -i -n 1 -P $nproc bash -c "jtreg -ea -esa -XX:-UseCompressedOops -timeoutFactor:4 -v:fail,error,time,nopass -nr -w $dir/index-{} $test &> $dir/{}.log ; grep 'Test results: passed: 1' -L $dir/{}.log"

97.log 94.log 84.log 79.log 72.log 70.log 59.log 57.log 46.log 45.log 43.log 37.log 36.log 29.log 1.log

同样的测试,开源版本没有问题:

image

sendaoYan commented 1 year ago

-Xcomp选项也会出现该问题

https://tone.aliyun-inc.com/ws/xesljfzh/test_result/148357?tab=1