Debugging thread dumps and server problems in ColdFusion 10

From line 26, notice this thread is executing the template test.cfm at line 3.

The calls from various functions to the CfmServlet and to the coldfusion.filter functions will always be present when running a template. The classname cftest2ecfm1335854924 comes from the filename that test.cfm was compiled into (if the option to 'Save Class Files' is enabled in the ColdFusion 10 Administrator). The .class file for test.cfm is \WEB-INF\cfclasses\cftest2ecfm1335854924.class. This name is constructed by prepending "cf" to the filename with non-alphanumeric characters replaced by their hexadecimal equivalent. For example; the dot (.) is 2e in hexadecimal. Directory separators are replaced with two underscores "__". The trailing number is a Java-supplied hash code.

The lines highlighted in RED are the important ones. They begin at an executing .cfm or .cfc and any lines above (lines 24 and 25 in the example above). The lines below the .cfc and .cfm line - generally - describe the context of the running template. For example, if macromedia.jdbc.sqlserver or macromedia.jdbc.oracle appears below the .cfm or .cfc, we know there is a database interaction (cfquery,cfstoredproc, etc).

In the example above, the lines in BLUE - or some subset of them depending on the request - usually aren't relevant to figuring out the problem so it's important not to be distracted by them.

Deadlocks

Deadlocks can be caused by one thread holding a resource needed by another thread or group of threads. This is the so-called thread wait pileup and can cause dozens of successive "timeout waiting for an available thread to run" type errors in the logs. A thread dump with a stuck system will often reveal one thread causing the problem. The root cause could be user code, code in the core ColdFusion or JRun engine or some outside influence such as a database problem, network issue, etc.

 

Get help faster and easier

New user?