If your ColdFusion MX server suddenly starts sending pages that display only <. or sometimes .< in the browser, then ColdFusion, or JRun actually, is actually trying to tell you is that an internal server error has occured.

This is a connector bug in CFMX 6.1 Updater 1, recently uncovered by the detective work of my colleague Tom D.

I've heard of some rare reports of this occurring, but I haven't seen any clear explanations of what caused it.

It turns out that the connector was just trying to return a message for "Internal Error" wrapped in some formatting HTML, but due to a connector glitch it just wrote some repeated HTML tags with a dangling bracket and period. If you view source you'll see the pointless HTML tags just hanging around.

So in the end there's no real mystery to it, other than just trying to find out what's causing the internal error on JRun, but that's another story.

Keep Library Loaded - Check this box to retain the library in RAM

I just worked a case where a ColdFusion MX 6.1 server was restarting over and over again every 1-5 minutes with virtually no helpful information in any of the ColdFusion, JRun, Webserver, or Windows Event logs, and there wasn't a HotSpot crash log anywhere.

The app was being tested in staging using the Microsoft Web Stress Tool, which will just hammer one or more designated pages. Running a brief stress test on an isolated test page having only "hello world" did not cause the CFMX server to restart, running the test on the application's main index.cfm easily crashed the server.

The app was loaded onto another CFMX server and the CFAdmin was adjusted for the CFX tags and the datasources. The same stress test did not crash the CFMX server here. A detailed comparison of the two servers and the two CF Admins was made, and it was noticed that the crashing server did not have the checkbox enabled to keep the C++ CFX tag loaded in memory, whereas the stable server was checked.

On the detail view for "Add/Edit C++ CFX Tag" the checkbox can be found, labelled as "Keep Library Loaded - Check this box to retain the library in RAM". Once this box was enabled on the crashing server it immediately became stable. The particular CFX tag was the popular CFX_IMAGE. Having to load an unload the CFX into memory for every request was demonstrated to crash the server while leaving very little evidence in its wake.

Runtime service is not available

I've run into another case of the ColdFusion server not starting up properly due to a empty license.properties file, previously blogged here.

It would be a good precaution to back up $CFMX_HOME/lib/license.properties and neo-query.xml because those files have been the ones to go AWOL on very rare occassions.

unexpected constant #35 -1

If you have a ColdFusion template having more than 66kb of text outside of the CFML tags then you might run into bug 54007. The result will be that the page will not compile on CFMX 6.x and the result will be a error and stack trace similar to the following:

unexpected constant #35 -1

java.lang.IllegalStateException: unexpected constant #35 -1
at coldfusion.compiler.ClassReader.readCpool(ClassReader.java:155)
at coldfusion.compiler.ClassReader.getClassName(ClassReader.java:164)
at coldfusion.runtime.TemplateClassLoader.findClass(TemplateClassLoader.java:153)
at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
at coldfusion.runtime.TemplateClassLoader$1.fetch(TemplateClassLoader.java:284)
at coldfusion.util.LruCache.get(LruCache.java:188)
at coldfusion.runtime.TemplateClassLoader$TemplateCache.fetchSerial(TemplateClassLoader.java:214)

For example, if you had a template that containing nothing other than "0123456789" repeated over and over until the file was greater than 66kb, then you would see the error.

To work around it, divide the template into sub-templates where each one has less than 66kb of text, then CFINCLUDE it from a parent template.