Comment 0 for bug 267100

Revision history for this message
a-r-k-i-b-o-t-t (arkibott-ray) wrote :

uname -a
Linux Laptop 2.6.24-19-generic #1 SMP Wed Aug 20 22:56:21 UTC 2008 i686 GNU/Linux

java -version
java version "1.6.0_06"
Java(TM) SE Runtime Environment (build 1.6.0_06-b02)
Java HotSpot(TM) Server VM (build 10.0-b22, mixed mode)

sysctl vm.overcommit_memory=2
(if you're unlucky fork will fail right from there on! so don't try this when you got importand files open)

then start java (or anything else..)

java
Error occurred during initialization of VM
Could not reserve enough space for object heap
#
# An unexpected error has been detected by Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0xb7dee4da, pid=7477, tid=3084225424
#
# Java VM: Java HotSpot(TM) Server VM (10.0-b22 mixed mode linux-x86)
# Problematic frame:
# C [libc.so.6+0x6f4da] cfree+0x7a
#
# An error report file with more information is saved as:
# /home/john/hs_err_pid7477.log
#
# If you would like to submit a bug report, please visit:
# http://java.sun.com/webapps/bugreport/crash.jsp
#
Aborted

This is just a java example. Other applications segfault. The problem itself is the kernel memory overcommitment and the resulting oom. To disable it or to trying out a workaround.. just makes things worse. Maybe the vm.overcommit_memory was a bad advice i read somewhere.

There is a lot of memory free. So this error is just.. i see no reason for this. Is the kernel memory management so dependent on the bad behavior of overcommiting memory?

To return to the default:

sysctl vm.overcommit_memory=0

and java works again.