A brief hiatus today from from the PCI Compliance series to issue a quick public service announcement. I was installing my free copy of SeeFusion today that I netted in the recent give-away WebApper had. Since the target machine was CF7 on a OpenSuse Linux with the JVM upgraded to 1.4.2_11, it was a "manual" install. Pretty easy-- copy a few jar files and edit a few configs. The problem was, SeeFusion wasn't able to connect to my debugging port to capture stack traces and I couldn't figure out why.
In pre Java 1.5, you have to run the JVM in debug mode to get stack traces. This is done with the following JVM args:
This tells the JVM to listen for a debugger to connect on port 28999 (among other things). I had added this line into the java.args portion of my jvm.config file and restarted CF a couple of times but netstat -pan | grep 28999 didn't show any process listening on that port.
After toying for a while and getting distracted by iptables for a bit I realized I had a line break in my jvm args. Using nano over SSH is kind of a pain when dealing with long lines of text. I had wrapped the line around to make it easier to read, and since the JVM started up with no errors I didn't think anything of it.
After removing all the line breaks and cycling the JVM one last time, port 28999 popped up on netstat, and SeeFusion began cranking out stack traces. So the lesson is this-- take care when editing your jvm.config file and for pete's sake, don't get any extra line breaks in those JVM args. If you're lucky, it will refuse to start. Otherwise you won't realize what you did wrong until you notice your changes aren't there.