Tomcat or JVM crash dump file?

RMorrisey picture RMorrisey · Feb 19, 2010 · Viewed 8.9k times · Source

Our Tomcat server terminated unexpectedly. (It runs as a windows service; the system event log shows an error: Event ID 7034).

Where can I find a dump of a JVM crash, or some indication of why the Tomcat service actually stopped running?

I see a number of exceptions in our application log (our web framework, Wicket is unable to serialize some of our pages to disk because of a NotSerializableException). I am guessing that these are a side effect of the service trying to shut down (because we have non-serializable objects in our pages). It's not clear to me what triggered the service shut down.

I've checked the following places:

  • application log
  • access log
  • stdout log
  • stderr log
  • tomcat.log
  • jakarta_service log

I don't see anything which indicates that Tomcat is shutting down, or that a VM error occurred. I see some SQL Server-related network errors in the windows application event, but these happened almost 20 minutes later.

Any hints?

Answer

staticman picture staticman · Apr 21, 2010

I have the same problem. You'll get an hs_err file when a jni call (to native code) is made and an error is encountered there (e.g. illegally accessing memory or segmentation fault). We are not finding an hs_err file nor is an error being displayed to the stderr like it normally does in that situation. We do know that the exit status of the Tomcat process was 134 (x86) which I believe indicates an abort signal. This will happen if you call the stdlib 'abort()' method in your code. I believe that somewhere in our jni native code we are calling 'abort()'. Unfortunately, there doesn't seem to be a good way to find where. If I could maybe generate a core dump from Tomcat when it exits I'd have something to go on.

It is unlikely that a Java exception being thrown would cause Tomcat to shutdown. Do you have any JNI code and is it possible you're calling abort()? Also, is it possible you have a Java call somewhere to System.exit()?