Horcrux7
Horcrux7

Reputation: 24467

What can I do if a Java VM crashes repeatedly?

What is the best practice to solve a Java VM crash if the follow conditions are true:

PS: With VM crash I means that the VM write a dump file like hs_err_pid1234.log and terminate.

Upvotes: 4

Views: 3540

Answers (5)

basszero
basszero

Reputation: 30014

32bit? 64bit? Amount of ram in client machine? processor? os? See if there is any connection between the systems. A connection may lead to a clue. If all else fails, consider using different major/minor versions of the JVM. Also, if the problem JUST started can you get to a time (via version control) where the program didn't crash? Look through the hs_err log, you may get an idea of what caused the crash. It could be a version of some other client library the JVM uses. Lastly, run the program in debug/profile and maybe you'll see some symptons before the crash (assuming you can duplicate it)

Upvotes: 0

Bill Michell
Bill Michell

Reputation: 8360

Read the hs_err_pid1234.log file (or whatever the error log file name is). There are usually clues in there. The next step depends on what you discover in the log.

Yes, it could be a bug in the specific version of the JVM implementation you are using, but I have also seen problems caused by memory fragmentation in the operating system. Windows, for example, is prone to pin dlls at inappropriate locations, and fail to allocate a contiguous block of memory when the JVM asks for it as a result. Other out opf memory problems can also manifest themselves through crash dumps of this type.

Upvotes: 4

matt b
matt b

Reputation: 140011

Take a look at the stacktraces in the dump file, as it should tell you what was going on when the crash occurred.

As well as digging into the hs_err dump file, I'd also submit it to Sun or whomever made your JVM (I believe there are instructions in how to do so at the top of the file?). It can't hurt.

Upvotes: 0

oxbow_lakes
oxbow_lakes

Reputation: 134320

Assuming the JVM version across machines is the same:

Figure out what is different about the machine where the JVM is crashing. Same OS and OS version? We have problems with JVMs crashing on a particular version of Red Hat for example. And we have also found some older Red Hat versions unable to cope with extra memory properly, resulting in running out of swap space. (Our solution was to upgrade RedHat).

Also, is the program doing exactly the same thing across machines? Is it accessing a shared filesystem? Is the file system mounted similarly on your machines (SMB/NFS etc)? Something must be different.

The log file should give you some idea of where the crash occurred (malloc for example).

Upvotes: 2

Einar
Einar

Reputation: 3317

Update or replace your JVM. If you currently have the newest version, then try an older one, or if you don't have the latest version, try updating to it. Maybe its a known issue in your particular version?

Upvotes: 3

Related Questions