mmap problem with diablo-1.5.0 on 6.1-RELEASE i386

Michael Rogers m.rogers at cs.ucl.ac.uk
Fri Apr 4 15:48:04 UTC 2008


Hi,

I'm having problems running Java on FreeBSD 6.1-RELEASE i386. The JVM seems 
to be unable to allocate memory for the code cache using mmap. Here's what 
I see on the command line:

~ $ java -version
Error occurred during initialization of VM
Could not reserve enough space for code cache
~ $ uname -mrs
FreeBSD 6.1-RELEASE i386
~ $ ulimit -a
core file size          (blocks, -c) unlimited
data seg size           (kbytes, -d) 2929687
file size               (blocks, -f) unlimited
max locked memory       (kbytes, -l) unlimited
max memory size         (kbytes, -m) unlimited
open files                      (-n) 11095
pipe size            (512 bytes, -p) 1
stack size              (kbytes, -s) 65536
cpu time               (seconds, -t) unlimited
max user processes              (-u) 5547
virtual memory          (kbytes, -v) unlimited
~ $

Here's the tail of the kdump output:

 48178 java     CALL  mmap(0,0x2000000,0,0x1042,0xffffffff,0,0,0)
 48178 java     RET   mmap -1 errno 12 Cannot allocate memory
 48178 java     CALL  write(0x1,0xbfbfd2d0,0x2b)
 48178 java     GIO   fd 1 wrote 43 bytes
       "Error occurred during initialization of VM
       "
 48178 java     RET   write 43/0x2b
 48178 java     CALL  write(0x1,0xbfbfd2d0,0x2d)
 48178 java     GIO   fd 1 wrote 45 bytes
       "Could not reserve enough space for code cache"
 48178 java     RET   write 45/0x2d
 48178 java     CALL  write(0x1,0xbb2ce361,0x1)
 48178 java     GIO   fd 1 wrote 1 byte
       "
       "
 48178 java     RET   write 1
 48178 java     CALL  unlink(0x8064500)
 48178 java     NAMI  "/tmp/hsperfdata_mrogers/48178"
 48178 java     RET   unlink 0
 48178 java     CALL  exit(0x1)

So it seems the mmap call is the problem, but I'm not sure why. I get the 
same results with the installed version of Java and a fresh download of 
diablo-1.5.0 from freebsdfoundation.org. I also have access to a FreeBSD 
6.2-RELEASE amd64 box where diablo-1.5.0 works fine; here's the 
corresponding command line and kdump output for comparison:

~ $ java -version
java version "1.5.0"
Java(TM) 2 Runtime Environment, Standard Edition (build diablo-1.5.0-b01)
Java HotSpot(TM) 64-Bit Server VM (build diablo-1.5.0_07-b01, mixed mode)
~ $ uname -mrs
FreeBSD 6.2-RELEASE amd64
~ $ ulimit -a
core file size          (blocks, -c) unlimited
data seg size           (kbytes, -d) 33554432
file size               (blocks, -f) unlimited
max locked memory       (kbytes, -l) unlimited
max memory size         (kbytes, -m) unlimited
open files                      (-n) 11095
pipe size            (512 bytes, -p) 1
stack size              (kbytes, -s) 524288
cpu time               (seconds, -t) unlimited
max user processes              (-u) 5547
virtual memory          (kbytes, -v) unlimited
~ $

 31867 java     CALL  mmap(0,0x3000000,0,0x1042,0xffffffff,0,0)
 31867 java     RET   mmap 78553088/0x804aea000
 31867 java     CALL  mmap(0x804aea000,0x270000,0x7,0x1012,0xffffffff,0,0)
 31867 java     RET   mmap 78553088/0x804aea000
 ... etc

Any thoughts on what could be causing this problem? Could it be something 
to do with ulimit? Unfortunately I don't have root on either of the boxes 
so I can't easily experiment with changing the limits.

Thanks in advance,
Michael


More information about the freebsd-java mailing list