SpecJBB2015 Hangs occasionally when shutting down. This looks like the same issue that was encountered 1-2 years ago. Something with soft references being cleared incorrectly.
Pure build of JDK 12 using flags:
-XX:CICompilerCount=8 -XX:+UnlockExperimentalVMOptions -XX:+UseZGC -Xmx16G -Xms16G -XX:ParallelGCThreads=8 -XX:ConcGCThreads=5 -XX:-CreateCoredumpOnCrash -XX:+PrintCompilation
This has only been observed on a Skylake machine so far.
Dump of problematic thread:
"Group1.Backend.CompositeBackend{Tier1}.6" #2941 daemon prio=10 os_prio=0 cpu=10472318,86ms elapsed=11949,97s tid=0x00007f667c29a7c0 nid=0x3269b runnable [0x00007f65dbffd000]
java.lang.Thread.State: RUNNABLE
at java.util.concurrent.ConcurrentHashMap.putVal(java.base/ConcurrentHashMap.java:1012)
at java.util.concurrent.ConcurrentHashMap.putIfAbsent(java.base/ConcurrentHashMap.java:1541)
at org.spec.jbb.core.locks.DelegateLockManager.getLock(DelegateLockManager.java:61)
at org.spec.jbb.hq.db.Storage.getCustomerBalance(Storage.java:343)
at org.spec.jbb.hq.HQ.reserveCredit(HQ.java:311)
at org.spec.jbb.hq.tx.CheckAndReserveCreditTransaction.execute(CheckAndReserveCreditTransaction.java:33)
at org.spec.jbb.core.tx.SimpleTransactionExecutor.execute(SimpleTransactionExecutor.java:37)
at org.spec.jbb.hq.HQ.execute(HQ.java:147)
at org.spec.jbb.core.threadpools.AbstractPool.processOne(AbstractPool.java:71)
at org.spec.jbb.core.threadpools.AbstractPool.process(AbstractPool.java:59)
at org.spec.jbb.core.threadpools.AbstractPool.processLocally(AbstractPool.java:135)
at org.spec.jbb.core.threadpools.EmptyMultiPool.processLocally(EmptyMultiPool.java:60)
at org.spec.jbb.core.executor.AbstractBatchExecutor.handle(AbstractBatchExecutor.java:66)
at org.spec.jbb.core.comm.Interconnect$Downlink.acceptRequest(Interconnect.java:1152)
at org.spec.jbb.core.comm.Interconnect$Downlink.accept(Interconnect.java:1104)
at org.spec.jbb.core.comm.Interconnect.forward(Interconnect.java:314)
at org.spec.jbb.core.comm.Interconnect.access$700(Interconnect.java:96)
at org.spec.jbb.core.comm.Interconnect$UplinkImpl.packetSend(Interconnect.java:951)
at org.spec.jbb.core.comm.Interconnect$UplinkImpl.sendRequest(Interconnect.java:722)
at org.spec.jbb.core.comm.Interconnect$UplinkImpl.sendRequest(Interconnect.java:816)
at org.spec.jbb.core.tx.TransactionContext.sendRequest(TransactionContext.java:30)
at org.spec.jbb.sm.tx.InStorePurchaseTransaction.doCheckout(InStorePurchaseTransaction.java:136)
at org.spec.jbb.sm.tx.AbstractPurchaseTransaction.execute(AbstractPurchaseTransaction.java:63)
at org.spec.jbb.core.tx.SimpleTransactionExecutor.execute(SimpleTransactionExecutor.java:37)
at org.spec.jbb.sm.SM.execute(SM.java:303)
at org.spec.jbb.core.threadpools.AbstractPool.processOne(AbstractPool.java:71)
at org.spec.jbb.core.threadpools.ForkJoinBatchTask.exec(ForkJoinBatchTask.java:87)
at java.util.concurrent.ForkJoinTask.doExec(java.base/ForkJoinTask.java:290)
at java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(java.base/ForkJoinPool.java:1020)
at java.util.concurrent.ForkJoinPool.scan(java.base/ForkJoinPool.java:1656)
at java.util.concurrent.ForkJoinPool.runWorker(java.base/ForkJoinPool.java:1594)
at java.util.concurrent.ForkJoinWorkerThread.run(java.base/ForkJoinWorkerThread.java:177)