enso-org / enso

Hybrid visual and textual functional programming.
https://enso.org
Apache License 2.0
7.34k stars 323 forks source link

A single ExecuteJob deadlocks while waiting on a `GuardedTruffleContext` lock #8383

Closed hubertp closed 8 months ago

hubertp commented 10 months ago

Encountered during regular execution: threaddump241123.txt

TL; DR

A single ExecuteJob gets initially all the necessary locks only to later get stuck when trying to ask for a yet another one, for GuardedTruffleContext. That job then blocks everything else because it is stuck. This is a case different from what we've seen so far where the order of reentrant locks was problematic.

Relevant bits:

"background-job-pool-1" #80 [910268] daemon prio=5 os_prio=0 cpu=2196.70ms elapsed=760.77s tid=0x00007fbea80120f0 nid=910268 waiting on condition  [0x00007fbeb3cfd000]
   java.lang.Thread.State: WAITING (parking)
        at jdk.internal.misc.Unsafe.park(java.base@21.0.1/Native Method)
        - parking to wait for  <0x0000000614f8f8e8> (a java.util.concurrent.locks.ReentrantReadWriteLock$FairSync)
        at java.util.concurrent.locks.LockSupport.park(java.base@21.0.1/LockSupport.java:221)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(java.base@21.0.1/AbstractQueuedSynchronizer.java:754)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireInterruptibly(java.base@21.0.1/AbstractQueuedSynchronizer.java:1010)
        at java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock.lockInterruptibly(java.base@21.0.1/ReentrantReadWriteLock.java:1014)
        at org.enso.interpreter.instrument.execution.ReentrantLocking.logLockAcquisition(org.enso.runtime/ReentrantLocking.scala:170)
        at org.enso.interpreter.instrument.execution.ReentrantLocking.acquireWriteCompilationLock(org.enso.runtime/ReentrantLocking.scala:95)
        at org.enso.interpreter.instrument.job.SerializeModuleJob.run(org.enso.runtime/SerializeModuleJob.java:27)
        at org.enso.interpreter.instrument.job.SerializeModuleJob.run(org.enso.runtime/SerializeModuleJob.java:10)
        at org.enso.interpreter.instrument.execution.JobExecutionEngine.$anonfun$runInternal$1(org.enso.runtime/JobExecutionEngine.scala:124)
        at org.enso.interpreter.instrument.execution.JobExecutionEngine$$Lambda/0x00007fbfc0fc5228.call(org.enso.runtime/Unknown Source)
        at java.util.concurrent.FutureTask.run(java.base@21.0.1/FutureTask.java:317)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(java.base@21.0.1/ThreadPoolExecutor.java:1144)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(java.base@21.0.1/ThreadPoolExecutor.java:642)
        at java.lang.Thread.runWith(java.base@21.0.1/Thread.java:1596)
        at java.lang.Thread.run(java.base@21.0.1/Thread.java:1583)
        at com.oracle.truffle.polyglot.PolyglotThread.access$001(org.graalvm.truffle/PolyglotThread.java:53)
        at com.oracle.truffle.polyglot.PolyglotThread$1.execute(org.graalvm.truffle/PolyglotThread.java:106)
        at com.oracle.truffle.polyglot.PolyglotThread$ThreadSpawnRootNode.executeImpl(org.graalvm.truffle/PolyglotThread.java:140)
        at com.oracle.truffle.polyglot.PolyglotThread$ThreadSpawnRootNode.execute(org.graalvm.truffle/PolyglotThread.java:131)
        at com.oracle.truffle.runtime.OptimizedCallTarget.executeRootNode(org.graalvm.truffle.runtime/OptimizedCallTarget.java:746)
        at com.oracle.truffle.runtime.OptimizedCallTarget.profiledPERoot(org.graalvm.truffle.runtime/OptimizedCallTarget.java:669)
        at com.oracle.truffle.runtime.OptimizedCallTarget.callBoundary(org.graalvm.truffle.runtime/OptimizedCallTarget.java:602)
        at com.oracle.truffle.runtime.OptimizedCallTarget.doInvoke(org.graalvm.truffle.runtime/OptimizedCallTarget.java:586)
        at com.oracle.truffle.runtime.OptimizedCallTarget.callIndirect(org.graalvm.truffle.runtime/OptimizedCallTarget.java:519)
        at com.oracle.truffle.runtime.OptimizedCallTarget.call(org.graalvm.truffle.runtime/OptimizedCallTarget.java:500)
        at com.oracle.truffle.polyglot.PolyglotThread.run(org.graalvm.truffle/PolyglotThread.java:102)
"job-pool-1" #85 [910274] daemon prio=5 os_prio=0 cpu=9020.91ms elapsed=760.39s tid=0x00007fbea436ed00 nid=910274 waiting on condition  [0x00007fbeb38fd000]
   java.lang.Thread.State: WAITING (parking)
        at jdk.internal.misc.Unsafe.park(java.base@21.0.1/Native Method)
        - parking to wait for  <0x0000000615486398> (a java.util.concurrent.locks.ReentrantLock$FairSync)
        at java.util.concurrent.locks.LockSupport.park(java.base@21.0.1/LockSupport.java:221)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(java.base@21.0.1/AbstractQueuedSynchronizer.java:754)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireInterruptibly(java.base@21.0.1/AbstractQueuedSynchronizer.java:1010)
        at java.util.concurrent.locks.ReentrantLock$Sync.lockInterruptibly(java.base@21.0.1/ReentrantLock.java:161)
        at java.util.concurrent.locks.ReentrantLock.lockInterruptibly(java.base@21.0.1/ReentrantLock.java:372)
        at org.enso.interpreter.instrument.execution.ReentrantLocking.logLockAcquisition(org.enso.runtime/ReentrantLocking.scala:170)
        at org.enso.interpreter.instrument.execution.ReentrantLocking.acquireContextLock(org.enso.runtime/ReentrantLocking.scala:147)
        at org.enso.interpreter.instrument.job.ExecuteJob.run(org.enso.runtime/ExecuteJob.scala:33)
        at org.enso.interpreter.instrument.job.ExecuteJob.run(org.enso.runtime/ExecuteJob.scala:18)
        at org.enso.interpreter.instrument.execution.JobExecutionEngine.$anonfun$runInternal$1(org.enso.runtime/JobExecutionEngine.scala:124)
        at org.enso.interpreter.instrument.execution.JobExecutionEngine$$Lambda/0x00007fbfc0fc5228.call(org.enso.runtime/Unknown Source)
        at java.util.concurrent.FutureTask.run(java.base@21.0.1/FutureTask.java:317)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(java.base@21.0.1/ThreadPoolExecutor.java:1144)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(java.base@21.0.1/ThreadPoolExecutor.java:642)
        at java.lang.Thread.runWith(java.base@21.0.1/Thread.java:1596)
        at java.lang.Thread.run(java.base@21.0.1/Thread.java:1583)
        at com.oracle.truffle.polyglot.PolyglotThread.access$001(org.graalvm.truffle/PolyglotThread.java:53)
        at com.oracle.truffle.polyglot.PolyglotThread$1.execute(org.graalvm.truffle/PolyglotThread.java:106)
        at com.oracle.truffle.polyglot.PolyglotThread$ThreadSpawnRootNode.executeImpl(org.graalvm.truffle/PolyglotThread.java:140)
        at com.oracle.truffle.polyglot.PolyglotThread$ThreadSpawnRootNode.execute(org.graalvm.truffle/PolyglotThread.java:131)
        at com.oracle.truffle.runtime.OptimizedCallTarget.executeRootNode(org.graalvm.truffle.runtime/OptimizedCallTarget.java:746)
        at com.oracle.truffle.runtime.OptimizedCallTarget.profiledPERoot(org.graalvm.truffle.runtime/OptimizedCallTarget.java:669)
        at com.oracle.truffle.runtime.OptimizedCallTarget.callBoundary(org.graalvm.truffle.runtime/OptimizedCallTarget.java:602)
        at com.oracle.truffle.runtime.OptimizedCallTarget.doInvoke(org.graalvm.truffle.runtime/OptimizedCallTarget.java:586)
        at com.oracle.truffle.runtime.OptimizedCallTarget.callIndirect(org.graalvm.truffle.runtime/OptimizedCallTarget.java:519)
        at com.oracle.truffle.runtime.OptimizedCallTarget.call(org.graalvm.truffle.runtime/OptimizedCallTarget.java:500)
        at com.oracle.truffle.polyglot.PolyglotThread.run(org.graalvm.truffle/PolyglotThread.java:102)
"job-pool-2" #86 [910275] daemon prio=5 os_prio=0 cpu=2296.39ms elapsed=760.35s tid=0x00007fbea40534e0 nid=910275 waiting on condition  [0x00007fbeb37fd000]
   java.lang.Thread.State: WAITING (parking)
        at jdk.internal.misc.Unsafe.park(java.base@21.0.1/Native Method)
        - parking to wait for  <0x0000000614f8f8e8> (a java.util.concurrent.locks.ReentrantReadWriteLock$FairSync)
        at java.util.concurrent.locks.LockSupport.park(java.base@21.0.1/LockSupport.java:221)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(java.base@21.0.1/AbstractQueuedSynchronizer.java:754)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireInterruptibly(java.base@21.0.1/AbstractQueuedSynchronizer.java:1010)
        at java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock.lockInterruptibly(java.base@21.0.1/ReentrantReadWriteLock.java:1014)
        at org.enso.interpreter.instrument.execution.ReentrantLocking.logLockAcquisition(org.enso.runtime/ReentrantLocking.scala:170)
        at org.enso.interpreter.instrument.execution.ReentrantLocking.acquireWriteCompilationLock(org.enso.runtime/ReentrantLocking.scala:95)
        at org.enso.interpreter.instrument.job.EnsureCompiledJob.run(org.enso.runtime/EnsureCompiledJob.scala:54)
        at org.enso.interpreter.instrument.job.EnsureCompiledJob.run(org.enso.runtime/EnsureCompiledJob.scala:41)
        at org.enso.interpreter.instrument.execution.JobExecutionEngine.$anonfun$runInternal$1(org.enso.runtime/JobExecutionEngine.scala:124)
        at org.enso.interpreter.instrument.execution.JobExecutionEngine$$Lambda/0x00007fbfc0fc5228.call(org.enso.runtime/Unknown Source)
        at java.util.concurrent.FutureTask.run(java.base@21.0.1/FutureTask.java:317)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(java.base@21.0.1/ThreadPoolExecutor.java:1144)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(java.base@21.0.1/ThreadPoolExecutor.java:642)
        at java.lang.Thread.runWith(java.base@21.0.1/Thread.java:1596)
        at java.lang.Thread.run(java.base@21.0.1/Thread.java:1583)
        at com.oracle.truffle.polyglot.PolyglotThread.access$001(org.graalvm.truffle/PolyglotThread.java:53)
        at com.oracle.truffle.polyglot.PolyglotThread$1.execute(org.graalvm.truffle/PolyglotThread.java:106)
        at com.oracle.truffle.polyglot.PolyglotThread$ThreadSpawnRootNode.executeImpl(org.graalvm.truffle/PolyglotThread.java:140)
        at com.oracle.truffle.polyglot.PolyglotThread$ThreadSpawnRootNode.execute(org.graalvm.truffle/PolyglotThread.java:131)
        at com.oracle.truffle.runtime.OptimizedCallTarget.executeRootNode(org.graalvm.truffle.runtime/OptimizedCallTarget.java:746)
        at com.oracle.truffle.runtime.OptimizedCallTarget.profiledPERoot(org.graalvm.truffle.runtime/OptimizedCallTarget.java:669)
        at com.oracle.truffle.runtime.OptimizedCallTarget.callBoundary(org.graalvm.truffle.runtime/OptimizedCallTarget.java:602)
        at com.oracle.truffle.runtime.OptimizedCallTarget.doInvoke(org.graalvm.truffle.runtime/OptimizedCallTarget.java:586)
        at com.oracle.truffle.runtime.OptimizedCallTarget.callIndirect(org.graalvm.truffle.runtime/OptimizedCallTarget.java:519)
        at com.oracle.truffle.runtime.OptimizedCallTarget.call(org.graalvm.truffle.runtime/OptimizedCallTarget.java:500)
        at com.oracle.truffle.polyglot.PolyglotThread.run(org.graalvm.truffle/PolyglotThread.java:102)

and

"job-pool-3" #87 [910276] daemon prio=5 os_prio=0 cpu=4302.92ms elapsed=760.35s tid=0x00007fbe98025000 nid=910276 waiting on condition  [0x00007fbeb36fd000]
   java.lang.Thread.State: WAITING (parking)
        at jdk.internal.misc.Unsafe.park(java.base@21.0.1/Native Method)
        - parking to wait for  <0x0000000614f8f8e8> (a java.util.concurrent.locks.ReentrantReadWriteLock$FairSync)
        at java.util.concurrent.locks.LockSupport.park(java.base@21.0.1/LockSupport.java:221)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(java.base@21.0.1/AbstractQueuedSynchronizer.java:754)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(java.base@21.0.1/AbstractQueuedSynchronizer.java:1099)
        at java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock.lockInterruptibly(java.base@21.0.1/ReentrantReadWriteLock.java:783)
        at org.enso.interpreter.instrument.execution.ReentrantLocking.logLockAcquisition(org.enso.runtime/ReentrantLocking.scala:170)
        at org.enso.interpreter.instrument.execution.ReentrantLocking.acquireReadCompilationLock(org.enso.runtime/ReentrantLocking.scala:114)
        at org.enso.interpreter.instrument.job.ExecuteJob.run(org.enso.runtime/ExecuteJob.scala:34)
        at org.enso.interpreter.instrument.job.ExecuteJob.run(org.enso.runtime/ExecuteJob.scala:18)
        at org.enso.interpreter.instrument.execution.JobExecutionEngine.$anonfun$runInternal$1(org.enso.runtime/JobExecutionEngine.scala:124)
        at org.enso.interpreter.instrument.execution.JobExecutionEngine$$Lambda/0x00007fbfc0fc5228.call(org.enso.runtime/Unknown Source)
        at java.util.concurrent.FutureTask.run(java.base@21.0.1/FutureTask.java:317)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(java.base@21.0.1/ThreadPoolExecutor.java:1144)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(java.base@21.0.1/ThreadPoolExecutor.java:642)
        at java.lang.Thread.runWith(java.base@21.0.1/Thread.java:1596)
        at java.lang.Thread.run(java.base@21.0.1/Thread.java:1583)
        at com.oracle.truffle.polyglot.PolyglotThread.access$001(org.graalvm.truffle/PolyglotThread.java:53)
        at com.oracle.truffle.polyglot.PolyglotThread$1.execute(org.graalvm.truffle/PolyglotThread.java:106)
        at com.oracle.truffle.polyglot.PolyglotThread$ThreadSpawnRootNode.executeImpl(org.graalvm.truffle/PolyglotThread.java:140)
        at com.oracle.truffle.polyglot.PolyglotThread$ThreadSpawnRootNode.execute(org.graalvm.truffle/PolyglotThread.java:131)
        at com.oracle.truffle.runtime.OptimizedCallTarget.executeRootNode(org.graalvm.truffle.runtime/OptimizedCallTarget.java:746)
        at com.oracle.truffle.runtime.OptimizedCallTarget.profiledPERoot(org.graalvm.truffle.runtime/OptimizedCallTarget.java:669)
        at com.oracle.truffle.runtime.OptimizedCallTarget.callBoundary(org.graalvm.truffle.runtime/OptimizedCallTarget.java:602)
        at com.oracle.truffle.runtime.OptimizedCallTarget.doInvoke(org.graalvm.truffle.runtime/OptimizedCallTarget.java:586)
        at com.oracle.truffle.runtime.OptimizedCallTarget.callIndirect(org.graalvm.truffle.runtime/OptimizedCallTarget.java:519)
        at com.oracle.truffle.runtime.OptimizedCallTarget.call(org.graalvm.truffle.runtime/OptimizedCallTarget.java:500)
        at com.oracle.truffle.polyglot.PolyglotThread.run(org.graalvm.truffle/PolyglotThread.java:102)

and

"job-pool-4" #122 [910373] daemon prio=5 os_prio=0 cpu=4117.78ms elapsed=748.67s tid=0x00007fbe3c007350 nid=910373 waiting on condition  [0x00007fbe419fd000]
   java.lang.Thread.State: WAITING (parking)
        at jdk.internal.misc.Unsafe.park(java.base@21.0.1/Native Method)
        - parking to wait for  <0x0000000615486398> (a java.util.concurrent.locks.ReentrantLock$FairSync)
        at java.util.concurrent.locks.LockSupport.park(java.base@21.0.1/LockSupport.java:221)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(java.base@21.0.1/AbstractQueuedSynchronizer.java:754)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireInterruptibly(java.base@21.0.1/AbstractQueuedSynchronizer.java:1010)
        at java.util.concurrent.locks.ReentrantLock$Sync.lockInterruptibly(java.base@21.0.1/ReentrantLock.java:161)
        at java.util.concurrent.locks.ReentrantLock.lockInterruptibly(java.base@21.0.1/ReentrantLock.java:372)
        at org.enso.interpreter.instrument.execution.ReentrantLocking.logLockAcquisition(org.enso.runtime/ReentrantLocking.scala:170)
        at org.enso.interpreter.instrument.execution.ReentrantLocking.acquireContextLock(org.enso.runtime/ReentrantLocking.scala:147)
        at org.enso.interpreter.instrument.job.DetachVisualizationJob.run(org.enso.runtime/DetachVisualizationJob.scala:36)
        at org.enso.interpreter.instrument.job.DetachVisualizationJob.run(org.enso.runtime/DetachVisualizationJob.scala:18)
        at org.enso.interpreter.instrument.execution.JobExecutionEngine.$anonfun$runInternal$1(org.enso.runtime/JobExecutionEngine.scala:124)
        at org.enso.interpreter.instrument.execution.JobExecutionEngine$$Lambda/0x00007fbfc0fc5228.call(org.enso.runtime/Unknown Source)
        at java.util.concurrent.FutureTask.run(java.base@21.0.1/FutureTask.java:317)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(java.base@21.0.1/ThreadPoolExecutor.java:1144)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(java.base@21.0.1/ThreadPoolExecutor.java:642)
        at java.lang.Thread.runWith(java.base@21.0.1/Thread.java:1596)
        at java.lang.Thread.run(java.base@21.0.1/Thread.java:1583)
        at com.oracle.truffle.polyglot.PolyglotThread.access$001(org.graalvm.truffle/PolyglotThread.java:53)
        at com.oracle.truffle.polyglot.PolyglotThread$1.execute(org.graalvm.truffle/PolyglotThread.java:106)
        at com.oracle.truffle.polyglot.PolyglotThread$ThreadSpawnRootNode.executeImpl(org.graalvm.truffle/PolyglotThread.java:140)
        at com.oracle.truffle.polyglot.PolyglotThread$ThreadSpawnRootNode.execute(org.graalvm.truffle/PolyglotThread.java:131)
        at com.oracle.truffle.runtime.OptimizedCallTarget.executeRootNode(org.graalvm.truffle.runtime/OptimizedCallTarget.java:746)

and

"job-pool-6" #124 [910375] daemon prio=5 os_prio=0 cpu=1929.20ms elapsed=748.67s tid=0x00007fbe38001f20 nid=910375 waiting on condition  [0x00007fbe417fd000]
   java.lang.Thread.State: WAITING (parking)
        at jdk.internal.misc.Unsafe.park(java.base@21.0.1/Native Method)
        - parking to wait for  <0x0000000615e78958> (a java.util.concurrent.locks.ReentrantLock$FairSync)
        at java.util.concurrent.locks.LockSupport.park(java.base@21.0.1/LockSupport.java:221)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(java.base@21.0.1/AbstractQueuedSynchronizer.java:754)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireInterruptibly(java.base@21.0.1/AbstractQueuedSynchronizer.java:1010)
        at java.util.concurrent.locks.ReentrantLock$Sync.lockInterruptibly(java.base@21.0.1/ReentrantLock.java:161)
        at java.util.concurrent.locks.ReentrantLock.lockInterruptibly(java.base@21.0.1/ReentrantLock.java:372)
        at org.enso.interpreter.instrument.execution.ReentrantLocking.logLockAcquisition(org.enso.runtime/ReentrantLocking.scala:170)
        at org.enso.interpreter.instrument.execution.ReentrantLocking.acquireContextLock(org.enso.runtime/ReentrantLocking.scala:147)
        at org.enso.interpreter.instrument.job.ExecuteJob.run(org.enso.runtime/ExecuteJob.scala:33)
        at org.enso.interpreter.instrument.job.ExecuteJob.run(org.enso.runtime/ExecuteJob.scala:18)
        at org.enso.interpreter.instrument.execution.JobExecutionEngine.$anonfun$runInternal$1(org.enso.runtime/JobExecutionEngine.scala:124)
        at org.enso.interpreter.instrument.execution.JobExecutionEngine$$Lambda/0x00007fbfc0fc5228.call(org.enso.runtime/Unknown Source)
        at java.util.concurrent.FutureTask.run(java.base@21.0.1/FutureTask.java:317)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(java.base@21.0.1/ThreadPoolExecutor.java:1144)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(java.base@21.0.1/ThreadPoolExecutor.java:642)
        at java.lang.Thread.runWith(java.base@21.0.1/Thread.java:1596)
        at java.lang.Thread.run(java.base@21.0.1/Thread.java:1583)
        at com.oracle.truffle.polyglot.PolyglotThread.access$001(org.graalvm.truffle/PolyglotThread.java:53)
        at com.oracle.truffle.polyglot.PolyglotThread$1.execute(org.graalvm.truffle/PolyglotThread.java:106)
        at com.oracle.truffle.polyglot.PolyglotThread$ThreadSpawnRootNode.executeImpl(org.graalvm.truffle/PolyglotThread.java:140)
        at com.oracle.truffle.polyglot.PolyglotThread$ThreadSpawnRootNode.execute(org.graalvm.truffle/PolyglotThread.java:131)
        at com.oracle.truffle.runtime.OptimizedCallTarget.executeRootNode(org.graalvm.truffle.runtime/OptimizedCallTarget.java:746)
        at com.oracle.truffle.runtime.OptimizedCallTarget.profiledPERoot(org.graalvm.truffle.runtime/OptimizedCallTarget.java:669)
        at com.oracle.truffle.runtime.OptimizedCallTarget.callBoundary(org.graalvm.truffle.runtime/OptimizedCallTarget.java:602)
        at com.oracle.truffle.runtime.OptimizedCallTarget.doInvoke(org.graalvm.truffle.runtime/OptimizedCallTarget.java:586)
        at com.oracle.truffle.runtime.OptimizedCallTarget.callIndirect(org.graalvm.truffle.runtime/OptimizedCallTarget.java:519)
        at com.oracle.truffle.runtime.OptimizedCallTarget.call(org.graalvm.truffle.runtime/OptimizedCallTarget.java:500)
        at com.oracle.truffle.polyglot.PolyglotThread.run(org.graalvm.truffle/PolyglotThread.java:102)

and more importantly this big chunk


"job-pool-5" #123 [910374] daemon prio=5 os_prio=0 cpu=2624.42ms elapsed=748.67s tid=0x00007fbe34003730 nid=910374 waiting on condition  [0x00007fbe418f6000]
   java.lang.Thread.State: WAITING (parking)
        at jdk.internal.misc.Unsafe.park(java.base@21.0.1/Native Method)
        - parking to wait for  <0x0000000614f6de58> (a java.util.concurrent.locks.ReentrantLock$NonfairSync)
        at java.util.concurrent.locks.LockSupport.park(java.base@21.0.1/LockSupport.java:221)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(java.base@21.0.1/AbstractQueuedSynchronizer.java:754)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(java.base@21.0.1/AbstractQueuedSynchronizer.java:990)
        at java.util.concurrent.locks.ReentrantLock$Sync.lock(java.base@21.0.1/ReentrantLock.java:153)
        at java.util.concurrent.locks.ReentrantLock.lock(java.base@21.0.1/ReentrantLock.java:322)
        at org.enso.interpreter.epb.runtime.GuardedTruffleContext.lock(org.enso.runtime/GuardedTruffleContext.java:64)
        at org.enso.interpreter.epb.runtime.GuardedTruffleContext.enter(org.enso.runtime/GuardedTruffleContext.java:57)
        at org.enso.interpreter.epb.runtime.PolyglotProxy.enterOrigin(org.enso.runtime/PolyglotProxy.java:68)
        at org.enso.interpreter.epb.runtime.PolyglotProxy.invokeMember(org.enso.runtime/PolyglotProxy.java:199)
        at org.enso.interpreter.epb.runtime.PolyglotProxyGen$InteropLibraryExports$Cached.invokeMember(org.enso.runtime/PolyglotProxyGen.java:487)
        at org.enso.interpreter.epb.node.JsForeignNode.doExecute(org.enso.runtime/JsForeignNode.java:40)
        at org.enso.interpreter.epb.node.JsForeignNodeGen.execute(org.enso.runtime/JsForeignNodeGen.java:66)
        at org.enso.interpreter.epb.node.ForeignEvalNode.execute(org.enso.runtime/ForeignEvalNode.java:57)
        at com.oracle.truffle.runtime.OptimizedCallTarget.executeRootNode(org.graalvm.truffle.runtime/OptimizedCallTarget.java:746)
        at com.oracle.truffle.runtime.OptimizedCallTarget.callInlined(org.graalvm.truffle.runtime/OptimizedCallTarget.java:550)
        at com.oracle.truffle.runtime.OptimizedDirectCallNode.call(org.graalvm.truffle.runtime/OptimizedDirectCallNode.java:94)
        at org.enso.interpreter.node.expression.foreign.ForeignMethodCallNode.executeGeneric(org.enso.runtime/ForeignMethodCallNode.java:51)
        at org.enso.interpreter.node.callable.function.BlockNode.executeGeneric(org.enso.runtime/BlockNode.java:54)
        at org.enso.interpreter.node.ClosureRootNode.execute(org.enso.runtime/ClosureRootNode.java:85)
        at com.oracle.truffle.runtime.OptimizedCallTarget.callBoundary(org.graalvm.truffle.runtime/OptimizedCallTarget.java:602)
...
        at com.oracle.truffle.runtime.OptimizedCallTarget.doInvoke(org.graalvm.truffle.runtime/OptimizedCallTarget.java:586)
        at com.oracle.truffle.runtime.OptimizedCallTarget.callIndirect(org.graalvm.truffle.runtime/OptimizedCallTarget.java:519)
        at com.oracle.truffle.runtime.OptimizedCallTarget.call(org.graalvm.truffle.runtime/OptimizedCallTarget.java:500)
        at org.enso.interpreter.service.ExecutionService.execute(org.enso.runtime/ExecutionService.java:197)
        at org.enso.interpreter.service.ExecutionService.execute(org.enso.runtime/ExecutionService.java:242)
        at org.enso.interpreter.instrument.job.ProgramExecutionSupport$.executeProgram(org.enso.runtime/ProgramExecutionSupport.scala:126)
        at org.enso.interpreter.instrument.job.ProgramExecutionSupport$.$anonfun$runProgram$3(org.enso.runtime/ProgramExecutionSupport.scala:253)
        at org.enso.interpreter.instrument.job.ProgramExecutionSupport$$$Lambda/0x00007fbfc13259d8.apply$mcV$sp(org.enso.runtime/Unknown Source)
        at scala.runtime.java8.JFunction0$mcV$sp.apply(org.enso.runtime/JFunction0$mcV$sp.scala:18)
        at cats.syntax.EitherObjectOps$.catchNonFatal$extension(org.enso.runtime/either.scala:391)
        at org.enso.interpreter.instrument.job.ProgramExecutionSupport$.$anonfun$runProgram$2(org.enso.runtime/ProgramExecutionSupport.scala:253)
        at org.enso.interpreter.instrument.job.ProgramExecutionSupport$$$Lambda/0x00007fbfc1325610.apply(org.enso.runtime/Unknown Source)
        at scala.util.Either.flatMap(org.enso.runtime/Either.scala:352)
        at org.enso.interpreter.instrument.job.ProgramExecutionSupport$.runProgram(org.enso.runtime/ProgramExecutionSupport.scala:247)
        at org.enso.interpreter.instrument.job.ExecuteJob.run(org.enso.runtime/ExecuteJob.scala:43)
        at org.enso.interpreter.instrument.job.ExecuteJob.run(org.enso.runtime/ExecuteJob.scala:18)
        at org.enso.interpreter.instrument.execution.JobExecutionEngine.$anonfun$runInternal$1(org.enso.runtime/JobExecutionEngine.scala:124)
        at org.enso.interpreter.instrument.execution.JobExecutionEngine$$Lambda/0x00007fbfc0fc5228.call(org.enso.runtime/Unknown Source)
        at java.util.concurrent.FutureTask.run(java.base@21.0.1/FutureTask.java:317)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(java.base@21.0.1/ThreadPoolExecutor.java:1144)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(java.base@21.0.1/ThreadPoolExecutor.java:642)
        at java.lang.Thread.runWith(java.base@21.0.1/Thread.java:1596)
        at java.lang.Thread.run(java.base@21.0.1/Thread.java:1583)
        at com.oracle.truffle.polyglot.PolyglotThread.access$001(org.graalvm.truffle/PolyglotThread.java:53)
        at com.oracle.truffle.polyglot.PolyglotThread$1.execute(org.graalvm.truffle/PolyglotThread.java:106)
        at com.oracle.truffle.polyglot.PolyglotThread$ThreadSpawnRootNode.executeImpl(org.graalvm.truffle/PolyglotThread.java:140)
        at com.oracle.truffle.polyglot.PolyglotThread$ThreadSpawnRootNode.execute(org.graalvm.truffle/PolyglotThread.java:131)
        at com.oracle.truffle.runtime.OptimizedCallTarget.executeRootNode(org.graalvm.truffle.runtime/OptimizedCallTarget.java:746)
        at com.oracle.truffle.runtime.OptimizedCallTarget.profiledPERoot(org.graalvm.truffle.runtime/OptimizedCallTarget.java:669)
        at com.oracle.truffle.runtime.OptimizedCallTarget.callBoundary(org.graalvm.truffle.runtime/OptimizedCallTarget.java:602)
        at com.oracle.truffle.runtime.OptimizedCallTarget.doInvoke(org.graalvm.truffle.runtime/OptimizedCallTarget.java:586)
        at com.oracle.truffle.runtime.OptimizedCallTarget.callIndirect(org.graalvm.truffle.runtime/OptimizedCallTarget.java:519)
        at com.oracle.truffle.runtime.OptimizedCallTarget.call(org.graalvm.truffle.runtime/OptimizedCallTarget.java:500)
        at com.oracle.truffle.polyglot.PolyglotThread.run(org.graalvm.truffle/PolyglotThread.java:102)

leading to

"sequential-command-pool-1" #83 [910270] daemon prio=5 os_prio=0 cpu=16.40ms elapsed=760.57s tid=0x00007fbf1c156390 nid=910270 waiting on condition  [0x00007fbeb3afe000]
   java.lang.Thread.State: WAITING (parking)
        at jdk.internal.misc.Unsafe.park(java.base@21.0.1/Native Method)
        - parking to wait for  <0x0000000614f72ca0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(java.base@21.0.1/LockSupport.java:371)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(java.base@21.0.1/AbstractQueuedSynchronizer.java:519)
        at java.util.concurrent.ForkJoinPool.unmanagedBlock(java.base@21.0.1/ForkJoinPool.java:3780)
        at java.util.concurrent.ForkJoinPool.managedBlock(java.base@21.0.1/ForkJoinPool.java:3725)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(java.base@21.0.1/AbstractQueuedSynchronizer.java:1707)
        at java.util.concurrent.LinkedBlockingQueue.take(java.base@21.0.1/LinkedBlockingQueue.java:435)
        at java.util.concurrent.ThreadPoolExecutor.getTask(java.base@21.0.1/ThreadPoolExecutor.java:1070)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(java.base@21.0.1/ThreadPoolExecutor.java:1130)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(java.base@21.0.1/ThreadPoolExecutor.java:642)
        at java.lang.Thread.runWith(java.base@21.0.1/Thread.java:1596)
        at java.lang.Thread.run(java.base@21.0.1/Thread.java:1583)
        at com.oracle.truffle.polyglot.PolyglotThread.access$001(org.graalvm.truffle/PolyglotThread.java:53)
        at com.oracle.truffle.polyglot.PolyglotThread$1.execute(org.graalvm.truffle/PolyglotThread.java:106)
        at com.oracle.truffle.polyglot.PolyglotThread$ThreadSpawnRootNode.executeImpl(org.graalvm.truffle/PolyglotThread.java:140)
        at com.oracle.truffle.polyglot.PolyglotThread$ThreadSpawnRootNode.execute(org.graalvm.truffle/PolyglotThread.java:131)
        at com.oracle.truffle.runtime.OptimizedCallTarget.executeRootNode(org.graalvm.truffle.runtime/OptimizedCallTarget.java:746)
        at com.oracle.truffle.runtime.OptimizedCallTarget.profiledPERoot(org.graalvm.truffle.runtime/OptimizedCallTarget.java:669)
        at com.oracle.truffle.runtime.OptimizedCallTarget.callBoundary(org.graalvm.truffle.runtime/OptimizedCallTarget.java:602)
        at com.oracle.truffle.runtime.OptimizedCallTarget.doInvoke(org.graalvm.truffle.runtime/OptimizedCallTarget.java:586)
        at com.oracle.truffle.runtime.OptimizedCallTarget.callIndirect(org.graalvm.truffle.runtime/OptimizedCallTarget.java:519)
        at com.oracle.truffle.runtime.OptimizedCallTarget.call(org.graalvm.truffle.runtime/OptimizedCallTarget.java:500)
        at com.oracle.truffle.polyglot.PolyglotThread.run(org.graalvm.truffle/PolyglotThread.java:102)

Basically, everything just went sideways. GUI became unresponsive by not providing widgets which made me wonder why (logs were not helpful).

JaroslavTulach commented 9 months ago

Work on #5087 also touches GuardedTruffleContext

jdunkerley commented 8 months ago

To review and possibly close.

hubertp commented 8 months ago

Closing as unable to reproduce. Potentially fixed by #5087's work.