Client Lockup when idle for hours

Hello all,

My Ignition client is locking up after it runs for a few hours. It doesn’t have a Not Responding message, and in the logs it doesn’t show anything unusual happening.

The computer has an i7 & 16 gb of ram, so I highly doubt those are the issues. I have allocated 2 GB of ram available to the client, so it seems that it shouldn’t have this issue.

Is there any way I could dump the thread logs for anyone to see and hopefully someone spots the issue?

Thanks,
Landon

You can get a thread dump of a hung JVM using jstack; you’ll need to download the JDK first.

What version of Ignition are you using?

I have the JDK installed, how do I call jstack to get the thread dump?

7.9.3 is the version I’m using.

The syntax is jstack.exe -F <pid> >> outputFilename.txt; you’ll need to get the PID of the running Ignition client (you can usually get it from Windows’ Task Manager by enabling a column.

Sorry this took so long!

Here is this jstack log:

C:\Program Files\Java\jdk1.8.0_131\bin>jstack.exe -F 6648
Attaching to process ID 6648, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.131-b11
Deadlock Detection:

No deadlocks found.

Thread 62: (state = BLOCKED)

  • java.lang.Thread.sleep(long) @bci=0 (Compiled frame; information may be imprecise)
  • sun.net.www.http.KeepAliveCache.run() @bci=3 (Compiled frame)
  • java.lang.Thread.run() @bci=11 (Compiled frame)

Thread 61: (state = BLOCKED)

  • java.lang.Object.wait(long) @bci=0 (Compiled frame; information may be imprecise)
  • java.util.TimerThread.mainLoop() @bci=201 (Compiled frame)
  • java.util.TimerThread.run() @bci=1 (Interpreted frame)

Thread 60: (state = BLOCKED)

  • sun.misc.Unsafe.park(boolean, long) @bci=0 (Compiled frame; information may be imprecise)
  • java.util.concurrent.locks.LockSupport.park(java.lang.Object) @bci=14 (Compiled frame)
  • java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await() @bci=42 (Compiled frame)
  • java.util.concurrent.LinkedBlockingQueue.take() @bci=29 (Interpreted frame)
  • java.util.concurrent.ThreadPoolExecutor.getTask() @bci=149 (Compiled frame)
  • java.util.concurrent.ThreadPoolExecutor.runWorker(java.util.concurrent.ThreadPoolExecutor$Worker) @bci=26 (Interpreted frame)
  • java.util.concurrent.ThreadPoolExecutor$Worker.run() @bci=5 (Interpreted frame)
  • java.lang.Thread.run() @bci=11 (Interpreted frame)

Thread 59: (state = BLOCKED)

  • sun.misc.Unsafe.park(boolean, long) @bci=0 (Compiled frame; information may be imprecise)
  • java.util.concurrent.locks.LockSupport.park(java.lang.Object) @bci=14 (Compiled frame)
  • java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await() @bci=42 (Compiled frame)
  • java.util.concurrent.LinkedBlockingQueue.take() @bci=29 (Interpreted frame)
  • java.util.concurrent.ThreadPoolExecutor.getTask() @bci=149 (Compiled frame)
  • java.util.concurrent.ThreadPoolExecutor.runWorker(java.util.concurrent.ThreadPoolExecutor$Worker) @bci=26 (Interpreted frame)
  • java.util.concurrent.ThreadPoolExecutor$Worker.run() @bci=5 (Interpreted frame)
  • java.lang.Thread.run() @bci=11 (Interpreted frame)

Thread 58: (state = BLOCKED)

  • sun.misc.Unsafe.park(boolean, long) @bci=0 (Compiled frame; information may be imprecise)
  • java.util.concurrent.locks.LockSupport.park(java.lang.Object) @bci=14 (Compiled frame)
  • java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await() @bci=42 (Compiled frame)
  • java.util.concurrent.LinkedBlockingQueue.take() @bci=29 (Interpreted frame)
  • java.util.concurrent.ThreadPoolExecutor.getTask() @bci=149 (Compiled frame)
  • java.util.concurrent.ThreadPoolExecutor.runWorker(java.util.concurrent.ThreadPoolExecutor$Worker) @bci=26 (Interpreted frame)
  • java.util.concurrent.ThreadPoolExecutor$Worker.run() @bci=5 (Interpreted frame)
  • java.lang.Thread.run() @bci=11 (Interpreted frame)

Thread 57: (state = BLOCKED)

  • sun.misc.Unsafe.park(boolean, long) @bci=0 (Compiled frame; information may be imprecise)
  • java.util.concurrent.locks.LockSupport.park(java.lang.Object) @bci=14 (Compiled frame)
  • java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await() @bci=42 (Compiled frame)
  • java.util.concurrent.LinkedBlockingQueue.take() @bci=29 (Interpreted frame)
  • java.util.concurrent.ThreadPoolExecutor.getTask() @bci=149 (Compiled frame)
  • java.util.concurrent.ThreadPoolExecutor.runWorker(java.util.concurrent.ThreadPoolExecutor$Worker) @bci=26 (Interpreted frame)
  • java.util.concurrent.ThreadPoolExecutor$Worker.run() @bci=5 (Interpreted frame)
  • java.lang.Thread.run() @bci=11 (Interpreted frame)

Thread 56: (state = BLOCKED)

  • sun.misc.Unsafe.park(boolean, long) @bci=0 (Compiled frame; information may be imprecise)
  • java.util.concurrent.locks.LockSupport.park(java.lang.Object) @bci=14 (Compiled frame)
  • java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await() @bci=42 (Compiled frame)
  • java.util.concurrent.LinkedBlockingQueue.take() @bci=29 (Interpreted frame)
  • java.util.concurrent.ThreadPoolExecutor.getTask() @bci=149 (Compiled frame)
  • java.util.concurrent.ThreadPoolExecutor.runWorker(java.util.concurrent.ThreadPoolExecutor$Worker) @bci=26 (Interpreted frame)
  • java.util.concurrent.ThreadPoolExecutor$Worker.run() @bci=5 (Interpreted frame)
  • java.lang.Thread.run() @bci=11 (Interpreted frame)

Thread 55: (state = BLOCKED)

  • sun.misc.Unsafe.park(boolean, long) @bci=0 (Compiled frame; information may be imprecise)
  • java.util.concurrent.locks.LockSupport.park(java.lang.Object) @bci=14 (Compiled frame)
  • java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await() @bci=42 (Compiled frame)
  • java.util.concurrent.LinkedBlockingQueue.take() @bci=29 (Interpreted frame)
  • java.util.concurrent.ThreadPoolExecutor.getTask() @bci=149 (Compiled frame)
  • java.util.concurrent.ThreadPoolExecutor.runWorker(java.util.concurrent.ThreadPoolExecutor$Worker) @bci=26 (Interpreted frame)
  • java.util.concurrent.ThreadPoolExecutor$Worker.run() @bci=5 (Interpreted frame)
  • java.lang.Thread.run() @bci=11 (Interpreted frame)

Thread 54: (state = BLOCKED)

  • java.lang.Object.wait(long) @bci=0 (Compiled frame; information may be imprecise)
  • java.util.TimerThread.mainLoop() @bci=201 (Compiled frame)
  • java.util.TimerThread.run() @bci=1 (Interpreted frame)

Thread 53: (state = BLOCKED)

  • sun.misc.Unsafe.park(boolean, long) @bci=0 (Compiled frame; information may be imprecise)
  • java.util.concurrent.locks.LockSupport.park(java.lang.Object) @bci=14 (Compiled frame)
  • java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await() @bci=42 (Compiled frame)
  • java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take() @bci=100 (Compiled frame)
  • java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take() @bci=1 (Compiled frame)
  • java.util.concurrent.ThreadPoolExecutor.getTask() @bci=149 (Compiled frame)
  • java.util.concurrent.ThreadPoolExecutor.runWorker(java.util.concurrent.ThreadPoolExecutor$Worker) @bci=26 (Compiled frame)
  • java.util.concurrent.ThreadPoolExecutor$Worker.run() @bci=5 (Interpreted frame)
  • java.lang.Thread.run() @bci=11 (Interpreted frame)

Thread 52: (state = BLOCKED)

  • sun.misc.Unsafe.park(boolean, long) @bci=0 (Compiled frame; information may be imprecise)
  • java.util.concurrent.locks.LockSupport.parkNanos(java.lang.Object, long) @bci=20 (Compiled frame)
  • java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(long) @bci=78 (Compiled frame)
  • java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take() @bci=124 (Compiled frame)
  • java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take() @bci=1 (Compiled frame)
  • java.util.concurrent.ThreadPoolExecutor.getTask() @bci=149 (Compiled frame)
  • java.util.concurrent.ThreadPoolExecutor.runWorker(java.util.concurrent.ThreadPoolExecutor$Worker) @bci=26 (Compiled frame)
  • java.util.concurrent.ThreadPoolExecutor$Worker.run() @bci=5 (Interpreted frame)
  • java.lang.Thread.run() @bci=11 (Interpreted frame)

Thread 51: (state = BLOCKED)

  • sun.misc.Unsafe.park(boolean, long) @bci=0 (Compiled frame; information may be imprecise)
  • java.util.concurrent.locks.LockSupport.park(java.lang.Object) @bci=14 (Compiled frame)
  • java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await() @bci=42 (Compiled frame)
  • java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take() @bci=100 (Compiled frame)
  • java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take() @bci=1 (Compiled frame)
  • java.util.concurrent.ThreadPoolExecutor.getTask() @bci=149 (Compiled frame)
  • java.util.concurrent.ThreadPoolExecutor.runWorker(java.util.concurrent.ThreadPoolExecutor$Worker) @bci=26 (Compiled frame)
  • java.util.concurrent.ThreadPoolExecutor$Worker.run() @bci=5 (Interpreted frame)
  • java.lang.Thread.run() @bci=11 (Interpreted frame)

Thread 50: (state = BLOCKED)

  • java.lang.Object.wait(long) @bci=0 (Compiled frame; information may be imprecise)
  • java.util.TimerThread.mainLoop() @bci=201 (Compiled frame)
  • java.util.TimerThread.run() @bci=1 (Interpreted frame)

Thread 49: (state = BLOCKED)

  • java.lang.Object.wait(long) @bci=0 (Compiled frame; information may be imprecise)
  • java.lang.Object.wait() @bci=2 (Compiled frame)
  • java.util.TimerThread.mainLoop() @bci=28 (Compiled frame)
  • java.util.TimerThread.run() @bci=1 (Interpreted frame)

Thread 48: (state = BLOCKED)

  • sun.misc.Unsafe.park(boolean, long) @bci=0 (Compiled frame; information may be imprecise)
  • java.util.concurrent.locks.LockSupport.park(java.lang.Object) @bci=14 (Compiled frame)
  • java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await() @bci=42 (Compiled frame)
  • java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take() @bci=100 (Compiled frame)
  • java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take() @bci=1 (Compiled frame)
  • java.util.concurrent.ThreadPoolExecutor.getTask() @bci=149 (Compiled frame)
  • java.util.concurrent.ThreadPoolExecutor.runWorker(java.util.concurrent.ThreadPoolExecutor$Worker) @bci=26 (Compiled frame)
  • java.util.concurrent.ThreadPoolExecutor$Worker.run() @bci=5 (Interpreted frame)
  • java.lang.Thread.run() @bci=11 (Interpreted frame)

Thread 47: (state = BLOCKED)

  • sun.misc.Unsafe.park(boolean, long) @bci=0 (Compiled frame; information may be imprecise)
  • java.util.concurrent.locks.LockSupport.park(java.lang.Object) @bci=14 (Compiled frame)
  • java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await() @bci=42 (Compiled frame)
  • java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take() @bci=100 (Compiled frame)
  • java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take() @bci=1 (Compiled frame)
  • java.util.concurrent.ThreadPoolExecutor.getTask() @bci=149 (Compiled frame)
  • java.util.concurrent.ThreadPoolExecutor.runWorker(java.util.concurrent.ThreadPoolExecutor$Worker) @bci=26 (Compiled frame)
  • java.util.concurrent.ThreadPoolExecutor$Worker.run() @bci=5 (Interpreted frame)
  • java.lang.Thread.run() @bci=11 (Interpreted frame)

Thread 46: (state = BLOCKED)

  • sun.misc.Unsafe.park(boolean, long) @bci=0 (Compiled frame; information may be imprecise)
  • java.util.concurrent.locks.LockSupport.park(java.lang.Object) @bci=14 (Compiled frame)
  • java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await() @bci=42 (Compiled frame)
  • java.util.concurrent.LinkedBlockingQueue.take() @bci=29 (Interpreted frame)
  • java.util.concurrent.ThreadPoolExecutor.getTask() @bci=149 (Compiled frame)
  • java.util.concurrent.ThreadPoolExecutor.runWorker(java.util.concurrent.ThreadPoolExecutor$Worker) @bci=26 (Interpreted frame)
  • java.util.concurrent.ThreadPoolExecutor$Worker.run() @bci=5 (Interpreted frame)
  • java.lang.Thread.run() @bci=11 (Interpreted frame)

Thread 45: (state = BLOCKED)

  • sun.misc.Unsafe.park(boolean, long) @bci=0 (Compiled frame; information may be imprecise)
  • java.util.concurrent.locks.LockSupport.park(java.lang.Object) @bci=14 (Compiled frame)
  • java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await() @bci=42 (Compiled frame)
  • java.util.concurrent.LinkedBlockingQueue.take() @bci=29 (Interpreted frame)
  • java.util.concurrent.ThreadPoolExecutor.getTask() @bci=149 (Compiled frame)
  • java.util.concurrent.ThreadPoolExecutor.runWorker(java.util.concurrent.ThreadPoolExecutor$Worker) @bci=26 (Interpreted frame)
  • java.util.concurrent.ThreadPoolExecutor$Worker.run() @bci=5 (Interpreted frame)
  • java.lang.Thread.run() @bci=11 (Interpreted frame)

Thread 44: (state = BLOCKED)

  • sun.misc.Unsafe.park(boolean, long) @bci=0 (Compiled frame; information may be imprecise)
  • java.util.concurrent.locks.LockSupport.park(java.lang.Object) @bci=14 (Compiled frame)
  • java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await() @bci=42 (Compiled frame)
  • java.util.concurrent.LinkedBlockingQueue.take() @bci=29 (Interpreted frame)
  • java.util.concurrent.ThreadPoolExecutor.getTask() @bci=149 (Compiled frame)
  • java.util.concurrent.ThreadPoolExecutor.runWorker(java.util.concurrent.ThreadPoolExecutor$Worker) @bci=26 (Interpreted frame)
  • java.util.concurrent.ThreadPoolExecutor$Worker.run() @bci=5 (Interpreted frame)
  • java.lang.Thread.run() @bci=11 (Interpreted frame)

Thread 43: (state = BLOCKED)

  • sun.misc.Unsafe.park(boolean, long) @bci=0 (Compiled frame; information may be imprecise)
  • java.util.concurrent.locks.LockSupport.parkNanos(java.lang.Object, long) @bci=20 (Compiled frame)
  • java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(long) @bci=78 (Compiled frame)
  • java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take() @bci=124 (Compiled frame)
  • java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take() @bci=1 (Compiled frame)
  • java.util.concurrent.ThreadPoolExecutor.getTask() @bci=149 (Compiled frame)
  • java.util.concurrent.ThreadPoolExecutor.runWorker(java.util.concurrent.ThreadPoolExecutor$Worker) @bci=26 (Compiled frame)
  • java.util.concurrent.ThreadPoolExecutor$Worker.run() @bci=5 (Interpreted frame)
  • java.lang.Thread.run() @bci=11 (Interpreted frame)

Thread 42: (state = BLOCKED)

  • sun.misc.Unsafe.park(boolean, long) @bci=0 (Compiled frame; information may be imprecise)
  • java.util.concurrent.locks.LockSupport.parkNanos(java.lang.Object, long) @bci=20 (Compiled frame)
  • java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(long) @bci=78 (Compiled frame)
  • java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take() @bci=124 (Compiled frame)
  • java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take() @bci=1 (Compiled frame)
  • java.util.concurrent.ThreadPoolExecutor.getTask() @bci=149 (Compiled frame)
  • java.util.concurrent.ThreadPoolExecutor.runWorker(java.util.concurrent.ThreadPoolExecutor$Worker) @bci=26 (Compiled frame)
  • java.util.concurrent.ThreadPoolExecutor$Worker.run() @bci=5 (Interpreted frame)
  • java.lang.Thread.run() @bci=11 (Interpreted frame)

Thread 41: (state = BLOCKED)

  • java.lang.Object.wait(long) @bci=0 (Interpreted frame)
  • java.lang.Object.wait() @bci=2 (Interpreted frame)
  • com.inductiveautomation.factorypmi.application.gateway.QueryManager$QueryQueue.take() @bci=27, line=620 (Interpreted frame)
  • com.inductiveautomation.factorypmi.application.gateway.QueryManager$UpdateQueryExecutor.run() @bci=52, line=422 (Interpreted frame)
  • java.lang.Thread.run() @bci=11 (Interpreted frame)

Thread 40: (state = BLOCKED)

  • java.lang.Object.wait(long) @bci=0 (Interpreted frame)
  • java.lang.Object.wait() @bci=2 (Interpreted frame)
  • com.inductiveautomation.factorypmi.application.gateway.QueryManager$QueryQueue.take() @bci=27, line=620 (Interpreted frame)
  • com.inductiveautomation.factorypmi.application.gateway.QueryManager$UpdateQueryExecutor.run() @bci=52, line=422 (Interpreted frame)
  • java.lang.Thread.run() @bci=11 (Interpreted frame)

Thread 39: (state = BLOCKED)

  • java.lang.Object.wait(long) @bci=0 (Interpreted frame)
  • java.lang.Object.wait() @bci=2 (Interpreted frame)
  • com.inductiveautomation.factorypmi.application.gateway.QueryManager$QueryQueue.take() @bci=27, line=620 (Interpreted frame)
  • com.inductiveautomation.factorypmi.application.gateway.QueryManager$UpdateQueryExecutor.run() @bci=52, line=422 (Interpreted frame)
  • java.lang.Thread.run() @bci=11 (Interpreted frame)

Thread 38: (state = BLOCKED)

  • java.lang.Object.wait(long) @bci=0 (Interpreted frame)
  • java.lang.Object.wait() @bci=2 (Interpreted frame)
  • com.inductiveautomation.factorypmi.application.gateway.QueryManager$QueryQueue.take() @bci=27, line=620 (Interpreted frame)
  • com.inductiveautomation.factorypmi.application.gateway.QueryManager$QueryExecutor.run() @bci=38, line=293 (Interpreted frame)
  • java.lang.Thread.run() @bci=11 (Interpreted frame)

Thread 37: (state = BLOCKED)

  • java.lang.Object.wait(long) @bci=0 (Interpreted frame)
  • java.lang.Object.wait() @bci=2 (Interpreted frame)
  • com.inductiveautomation.factorypmi.application.gateway.QueryManager$QueryQueue.take() @bci=27, line=620 (Interpreted frame)
  • com.inductiveautomation.factorypmi.application.gateway.QueryManager$QueryExecutor.run() @bci=38, line=293 (Interpreted frame)
  • java.lang.Thread.run() @bci=11 (Interpreted frame)

Thread 36: (state = BLOCKED)

  • java.lang.Object.wait(long) @bci=0 (Interpreted frame)
  • java.lang.Object.wait() @bci=2 (Interpreted frame)
  • com.inductiveautomation.factorypmi.application.gateway.QueryManager$QueryQueue.take() @bci=27, line=620 (Interpreted frame)
  • com.inductiveautomation.factorypmi.application.gateway.QueryManager$QueryExecutor.run() @bci=38, line=293 (Interpreted frame)
  • java.lang.Thread.run() @bci=11 (Interpreted frame)

Thread 35: (state = BLOCKED)

  • java.lang.Object.wait(long) @bci=0 (Interpreted frame)
  • java.lang.Object.wait() @bci=2 (Interpreted frame)
  • com.inductiveautomation.factorypmi.application.gateway.QueryManager$QueryQueue.take() @bci=27, line=620 (Interpreted frame)
  • com.inductiveautomation.factorypmi.application.gateway.QueryManager$QueryExecutor.run() @bci=38, line=293 (Interpreted frame)
  • java.lang.Thread.run() @bci=11 (Interpreted frame)

Thread 34: (state = BLOCKED)

  • java.lang.Object.wait(long) @bci=0 (Interpreted frame)
  • java.lang.Object.wait() @bci=2 (Interpreted frame)
  • com.inductiveautomation.factorypmi.application.gateway.QueryManager$QueryQueue.take() @bci=27, line=620 (Interpreted frame)
  • com.inductiveautomation.factorypmi.application.gateway.QueryManager$QueryExecutor.run() @bci=38, line=293 (Interpreted frame)
  • java.lang.Thread.run() @bci=11 (Interpreted frame)

Thread 33: (state = BLOCKED)

  • java.lang.Object.wait(long) @bci=0 (Interpreted frame)
  • java.lang.Object.wait() @bci=2 (Interpreted frame)
  • com.inductiveautomation.factorypmi.application.gateway.QueryManager$QueryQueue.take() @bci=27, line=620 (Interpreted frame)
  • com.inductiveautomation.factorypmi.application.gateway.QueryManager$QueryExecutor.run() @bci=38, line=293 (Interpreted frame)
  • java.lang.Thread.run() @bci=11 (Interpreted frame)

Thread 32: (state = BLOCKED)

  • java.lang.Object.wait(long) @bci=0 (Interpreted frame)
  • java.lang.Object.wait() @bci=2 (Interpreted frame)
  • com.inductiveautomation.factorypmi.application.gateway.QueryManager$QueryQueue.take() @bci=27, line=620 (Interpreted frame)
  • com.inductiveautomation.factorypmi.application.gateway.QueryManager$QueryExecutor.run() @bci=38, line=293 (Interpreted frame)
  • java.lang.Thread.run() @bci=11 (Interpreted frame)

Thread 31: (state = BLOCKED)

  • java.lang.Object.wait(long) @bci=0 (Interpreted frame)
  • java.lang.Object.wait() @bci=2 (Interpreted frame)
  • java.util.TimerThread.mainLoop() @bci=28 (Interpreted frame)
  • java.util.TimerThread.run() @bci=1 (Interpreted frame)

Thread 30: (state = BLOCKED)

  • sun.misc.Unsafe.park(boolean, long) @bci=0 (Compiled frame; information may be imprecise)
  • java.util.concurrent.locks.LockSupport.park(java.lang.Object) @bci=14 (Compiled frame)
  • java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await() @bci=42 (Compiled frame)
  • java.util.concurrent.LinkedBlockingQueue.take() @bci=29 (Interpreted frame)
  • java.util.concurrent.ThreadPoolExecutor.getTask() @bci=149 (Compiled frame)
  • java.util.concurrent.ThreadPoolExecutor.runWorker(java.util.concurrent.ThreadPoolExecutor$Worker) @bci=26 (Interpreted frame)
  • java.util.concurrent.ThreadPoolExecutor$Worker.run() @bci=5 (Interpreted frame)
  • java.lang.Thread.run() @bci=11 (Interpreted frame)

Thread 29: (state = BLOCKED)

  • java.lang.Thread.sleep(long) @bci=0 (Compiled frame; information may be imprecise)
  • com.inductiveautomation.ignition.client.images.ImageLoader$CacheMaintainer.run() @bci=3, line=539 (Interpreted frame)
  • java.lang.Thread.run() @bci=11 (Interpreted frame)

Thread 28: (state = BLOCKED)

  • sun.misc.Unsafe.park(boolean, long) @bci=0 (Compiled frame; information may be imprecise)
  • java.util.concurrent.locks.LockSupport.parkNanos(java.lang.Object, long) @bci=20 (Compiled frame)
  • java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(long) @bci=78 (Compiled frame)
  • java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take() @bci=124 (Compiled frame)
  • java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take() @bci=1 (Compiled frame)
  • java.util.concurrent.ThreadPoolExecutor.getTask() @bci=149 (Compiled frame)
  • java.util.concurrent.ThreadPoolExecutor.runWorker(java.util.concurrent.ThreadPoolExecutor$Worker) @bci=26 (Compiled frame)
  • java.util.concurrent.ThreadPoolExecutor$Worker.run() @bci=5 (Interpreted frame)
  • java.lang.Thread.run() @bci=11 (Interpreted frame)

Thread 27: (state = BLOCKED)

  • java.lang.Object.wait(long) @bci=0 (Compiled frame; information may be imprecise)
  • com.inductiveautomation.ignition.client.launch.steps.CacheStep$IDKeepalive.run() @bci=12, line=231 (Interpreted frame)

Thread 1: (state = BLOCKED)

Thread 25: (state = IN_JAVA)

  • java.lang.String.toLowerCase() @bci=4 (Compiled frame; information may be imprecise)
  • com.inductiveautomation.ignition.common.AbstractDataset.getColumnIndex(java.lang.String) @bci=5, line=75 (Compiled frame)
  • com.inductiveautomation.ignition.common.AbstractDataset.getValueAt(int, java.lang.String) @bci=2, line=160 (Compiled frame)
  • com.inductiveautomation.factorypmi.application.components.tabstrip.TabAttribute.getInt(int, com.inductiveautomation.ignition.common.Dataset) @bci=59, line=86 (Compiled frame)
  • com.inductiveautomation.factorypmi.application.components.tabstrip.TabComponent.addLabel() @bci=105, line=249 (Compiled frame)
  • com.inductiveautomation.factorypmi.application.components.tabstrip.TabComponent.propertyChange(java.beans.PropertyChangeEvent) @bci=215, line=165 (Compiled frame)
  • java.beans.PropertyChangeSupport.fire(java.beans.PropertyChangeListener, java.beans.PropertyChangeEvent) @bci=27 (Compiled frame)
  • java.beans.PropertyChangeSupport.firePropertyChange(java.beans.PropertyChangeEvent) @bci=77 (Compiled frame)
  • java.beans.PropertyChangeSupport.firePropertyChange(java.lang.String, java.lang.Object, java.lang.Object) @bci=31 (Compiled frame)
  • java.awt.Component.firePropertyChange(java.lang.String, java.lang.Object, java.lang.Object) @bci=55 (Compiled frame)
  • com.inductiveautomation.factorypmi.application.components.tabstrip.PMITabStrip.setSelectedTab(java.lang.String) @bci=102, line=497 (Compiled frame)
  • com.inductiveautomation.factorypmi.application.components.tabstrip.PMITabStrip.setTabData(com.inductiveautomation.ignition.common.Dataset) @bci=43, line=556 (Compiled frame)
  • sun.reflect.GeneratedMethodAccessor106.invoke(java.lang.Object, java.lang.Object) @bci=40 (Compiled frame)
  • sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object) @bci=6 (Compiled frame)
  • java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object) @bci=56 (Compiled frame)
  • com.inductiveautomation.factorypmi.application.binding.AbstractPropertyAdapter.updateTarget() @bci=217, line=320 (Compiled frame)
  • com.inductiveautomation.factorypmi.application.binding.CellUpdateAdapter.updateTarget() @bci=6, line=215 (Compiled frame)
  • com.inductiveautomation.factorypmi.application.binding.AbstractPropertyAdapter.updateValue(com.inductiveautomation.ignition.common.model.values.QualifiedValue) @bci=37, line=264 (Compiled frame)
  • com.inductiveautomation.factorypmi.application.binding.CellUpdateAdapter.eval(com.inductiveautomation.ignition.common.Dataset) @bci=327, line=184 (Compiled frame)
  • com.inductiveautomation.factorypmi.application.binding.CellUpdateAdapter.eval() @bci=7, line=121 (Compiled frame)
  • com.inductiveautomation.factorypmi.application.binding.CellUpdateAdapter.access$000(com.inductiveautomation.factorypmi.application.binding.CellUpdateAdapter) @bci=1, line=30 (Compiled frame)
  • com.inductiveautomation.factorypmi.application.binding.CellUpdateAdapter$1.run() @bci=4, line=207 (Compiled frame)
  • com.inductiveautomation.ignition.client.util.EDTUtil$ProcessQueue.run() @bci=110, line=113 (Compiled frame)
  • java.awt.event.InvocationEvent.dispatch() @bci=47 (Compiled frame)
  • java.awt.EventQueue.dispatchEventImpl(java.awt.AWTEvent, java.lang.Object) @bci=21 (Compiled frame)
  • java.awt.EventQueue.access$500(java.awt.EventQueue, java.awt.AWTEvent, java.lang.Object) @bci=3 (Compiled frame)
  • java.awt.EventQueue$3.run() @bci=32 (Compiled frame)
  • java.awt.EventQueue$3.run() @bci=1 (Compiled frame)
  • java.security.AccessController.doPrivileged(java.security.PrivilegedAction, java.security.AccessControlContext) @bci=0 (Compiled frame)
  • java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(java.security.PrivilegedAction, java.security.AccessControlContext, java.security.AccessControlContext) @bci=18 (Compiled frame)
  • java.awt.EventQueue.dispatchEvent(java.awt.AWTEvent) @bci=46 (Compiled frame)
  • java.awt.EventDispatchThread.pumpOneEventForFilters(int) @bci=245 (Compiled frame)
  • java.awt.EventDispatchThread.pumpEventsForFilter(int, java.awt.Conditional, java.awt.EventFilter) @bci=35 (Compiled frame)
  • java.awt.EventDispatchThread.pumpEventsForHierarchy(int, java.awt.Conditional, java.awt.Component) @bci=11 (Interpreted frame)
  • java.awt.EventDispatchThread.pumpEvents(int, java.awt.Conditional) @bci=4 (Interpreted frame)
  • java.awt.EventDispatchThread.pumpEvents(java.awt.Conditional) @bci=3 (Interpreted frame)
  • java.awt.EventDispatchThread.run() @bci=9 (Interpreted frame)

Thread 24: (state = IN_JAVA)

  • javax.swing.TimerQueue.run() @bci=20 (Compiled frame; information may be imprecise)
  • java.lang.Thread.run() @bci=11 (Interpreted frame)

Thread 23: (state = IN_NATIVE)

  • sun.awt.windows.WToolkit.eventLoop() @bci=0 (Interpreted frame)
  • sun.awt.windows.WToolkit.run() @bci=58 (Interpreted frame)
  • java.lang.Thread.run() @bci=11 (Interpreted frame)

Thread 22: (state = BLOCKED)

  • java.lang.Object.wait(long) @bci=0 (Compiled frame; information may be imprecise)
  • java.lang.Object.wait() @bci=2 (Compiled frame)
  • sun.awt.AWTAutoShutdown.run() @bci=32 (Interpreted frame)
  • java.lang.Thread.run() @bci=11 (Interpreted frame)

Thread 21: (state = BLOCKED)

  • java.lang.Object.wait(long) @bci=0 (Compiled frame; information may be imprecise)
  • java.lang.ref.ReferenceQueue.remove(long) @bci=59 (Compiled frame)
  • java.lang.ref.ReferenceQueue.remove() @bci=2 (Compiled frame)
  • sun.java2d.Disposer.run() @bci=3 (Compiled frame)
  • java.lang.Thread.run() @bci=11 (Interpreted frame)

Thread 14: (state = BLOCKED)

Thread 13: (state = BLOCKED)

Thread 12: (state = BLOCKED)

  • java.lang.Object.wait(long) @bci=0 (Compiled frame; information may be imprecise)
  • java.lang.ref.ReferenceQueue.remove(long) @bci=59 (Compiled frame)
  • java.lang.ref.ReferenceQueue.remove() @bci=2 (Compiled frame)
  • java.lang.ref.Finalizer$FinalizerThread.run() @bci=36 (Compiled frame)

Thread 11: (state = BLOCKED)

  • java.lang.Object.wait(long) @bci=0 (Compiled frame; information may be imprecise)
  • java.lang.Object.wait() @bci=2 (Compiled frame)
  • java.lang.ref.Reference.tryHandlePending(boolean) @bci=54 (Compiled frame)
  • java.lang.ref.Reference$ReferenceHandler.run() @bci=1 (Compiled frame)

It seems it didn't detect a deadlock, so I'm assuming it didn't quite work right? The client was left online after 5 days. It was using 1,150 MB's of ram and is allowed to use 2.

No blocked threads, but I would look for a cell update binding on a tab strip somewhere. It looks like there might be a runaway propertyChange event or something similar - is the tab strip bound in such a way that it could end up with a circular reference?

v7.9.3 is when similar issues started with me also. I don’t want to directly blame something in that version, however, my client ran for months on end until (around) that update on the server. My client will crash out with java heap issues after a few hours of production running. It lasts a day or so if no production is running. The difference is graphs that are populated with traces when production runs, blank if stopped.