Skip to content

Thread Dump

A thread dump captures the stack of every thread in the JVM at one instant and writes it to a file. It is the standard artifact for diagnosing a hang: it shows not just that a thread is stuck, but the exact call it is stuck in.

Take one from Help -> Monitor Server Resources.

Creating a thread dump can pause processing

The dialog warns that creating the file could pause the engine for a few seconds. That is usually acceptable on a system that is already stuck (which is when you want one) but it is not free, so prefer View Threads when you only need to look.

The file

The dump is written to the QIE home directory on the server, not downloaded to your browser:

qieThreadDump.txt

The dialog confirms the filename when it finishes. It is written on the instance the request was dispatched to, which in a cluster is the one selected in the dialog.

Getting it to support

Do not go looking for it on disk. The log export picks it up automatically, along with the shutdown dump described below. Export the logs and send that: Exporting Log Messages.

The shutdown thread dump

QIE also writes a dump of its own accord when the launcher shuts the engine down:

shutdownThreadDump

That file is the one to look at when QIE hangs on shutdown or takes an unexpectedly long time to stop. It shows what was still running when the stop was requested. It is collected by the log export too.

Reading one

You are looking for what threads are blocked on, and for repetition:

  • Many threads in the same stack point at a shared bottleneck: one external system, one lock, one database call.
  • A thread in a socket read with no timeout is the classic stuck-channel signature; check the receiver or sender's timeout setting.
  • BLOCKED threads waiting on a monitor point at contention. Note that QIE forbids database work inside synchronized blocks precisely to avoid this, so a database call under a lock in a custom script is worth suspecting.
  • Two dumps a minute apart are worth far more than one. If the same thread is in the same place in both, it is genuinely stuck rather than merely busy.

In a cluster

The dump covers one instance. Confirm which node is affected from Global System Status first. A dump from a healthy node proves only that that node is healthy.