Random JVM crashes. (no JNI)

Hello,

I have a J2SE application that is running the server for my game. It runs on a Linux box that is getting a number of various JVM crashes. The program has no JNI and does not use any libraries, it’s all just Java. The call stacks are always different, and I don’t see any consistency in what is happening in the application when the JVM crashes. It does however always seem to be a SIGSEGV. Sometimes they happen after 2 minutes of uptime, sometimes after days.

I tried upgrading the JVM from 6.0_27-b07 to 7.0_06-b24 but it has made no difference. I uploaded all the hs_err logs here: http://www.tacticstudios.com/downloads/logs.rar if you would like to take a look.

Due to the inconsistent call stacks my only assumption is that memory is getting corrupted in some way, and the crash is occurring later on. Maybe it is a hardware problem? I’m not certain what would cause this.

Any assistance you can provide in how to debug this, or any ideas would be extremely appreciated. Here is the most recent log: http://pastebin.java-gaming.org/cfa70551363

Jesse

Can you run a system memory test on the linux box?

I had several SIGSEGV incident before but I was using JNI (libgdx). So I think it’s related to underhood black magic.

Which JVM do you use?

You’re running an old VM with some known serious bugs in the compiler. Try upgrading to the latest one first.

Cas :slight_smile:

What operating system is this? Linux, but what?

  • I am changing out the hardware so hopefully that will rule out that problem.
  • Detailed info on the server and JVM is in http://pastebin.java-gaming.org/cfa70551363 but I tried both 6.0_27-b07 and 7.0_06-b24.
  • The Linux box is: Linux 2.6.32-220.13.1.el6.x86_64 OS:CentOS release 6.4

I will ask why they installed 7.0_06 and try upgrading to the latest and see if that helps.

Memory: 4k page, physical 2045524k(93212k free)

shure runs on low free memory.

also Log your memory consumption.

That’s normal for a linux system - it will try to use all memory for buffers/cache if it can to improve performance. If a program needs more memory, it will throw out buffers/cache and allocate it to the program. In addition to 2G of normal memory, there’s 4G of swap, almost all of which is free. In effect, there’s really about 1.2G of free normal memory and 4G of free swap.

MemTotal: 2045524 kB
MemFree: 93212 kB
Buffers: 215936 kB
Cached: 957604 kB

SwapTotal: 4095992 kB
SwapFree: 4084172 kB

Joen is right, there’s lots of free memory. Funny but accurate explanation here: http://www.linuxatemyram.com/

Also, I do output the memory in a private log, it didn’t exceed more than 10mb at one point. Plus, you’d think it would throw OutOfMemoryException not just crash the JVM.