From: Otto Diesenbacher
Subject: troubles getting sbcl run on a vserver
Date: Mon, 18 Sep 2006 23:14:46 +0000
Message-ID: <m2ac4wahsp.fsf@gmail.com> Dear Lispers,
i tried to run sbcl on my newly rented web-vserver. I am not shure
what kind of virtualisation my provider is using.
Unfortunatly sbcl doesn't start. :(
It dies immediately with the following message:
,----
| mmap: Cannot allocate memory
| ensure_space: failed to validate 536870912 bytes at 0x09000000
| (hint: Try "ulimit -a"; maybe you should increase memory limits.)
`----
I tried the current sbcl-version and also older versions. (btw. cmucl
dies with a similar message)
I fear that the reason of these problems, are caused by the
virtualisation, but do you see any chance of getting sbcl run?
see strace, uname and ulimit-output below.
thank for any advice in advance!
okflo
,----
| ·····@vs2061208:~$ ulimit -a
| core file size (blocks, -c) 0
| data seg size (kbytes, -d) unlimited
| file size (blocks, -f) unlimited
| max locked memory (kbytes, -l) unlimited
| max memory size (kbytes, -m) unlimited
| open files (-n) 1024
| pipe size (512 bytes, -p) 8
| stack size (kbytes, -s) 8192
| cpu time (seconds, -t) unlimited
| max user processes (-u) unlimited
| virtual memory (kbytes, -v) unlimited
`----
,----
| ·····@vs2061208:~$ uname -a
| Linux vs2061208.vserver.de 2.6.9-022stab078.14-enterprise #1
| SMP Wed Jul 19 14:35:02 MSD 2006 i686 GNU/Linux
`----
,----
| ·····@vs2061208:~$ strace sbcl
| execve("/usr/local/bin/sbcl", ["sbcl"], [/* 14 vars */]) = 0
| uname({sys="Linux", node="vs2061208.vserver.de", ...}) = 0
| brk(0) = 0x817e000
| old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40017000
| access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
| open("/etc/ld.so.preload", O_RDONLY) = -1 ENOENT (No such file or directory)
| open("/etc/ld.so.cache", O_RDONLY) = 3
| fstat64(3, {st_mode=S_IFREG|0644, st_size=16548, ...}) = 0
| old_mmap(NULL, 16548, PROT_READ, MAP_PRIVATE, 3, 0) = 0x40018000
| close(3) = 0
| access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
| open("/lib/tls/libdl.so.2", O_RDONLY) = 3
| read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\320\32"..., 512) = 512
| fstat64(3, {st_mode=S_IFREG|0644, st_size=9872, ...}) = 0
| old_mmap(NULL, 8632, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x4001d000
| old_mmap(0x4001f000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x2000) = 0x4001f000
| close(3) = 0
| access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
| open("/lib/tls/libpthread.so.0", O_RDONLY) = 3
| read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0pF\0\000"..., 512) = 512
| fstat64(3, {st_mode=S_IFREG|0755, st_size=78233, ...}) = 0
| old_mmap(NULL, 60772, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x40020000
| old_mmap(0x4002c000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0xc000) = 0x4002c000
| old_mmap(0x4002d000, 7524, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x4002d000
| close(3) = 0
| access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
| open("/lib/tls/libm.so.6", O_RDONLY) = 3
| read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\00005\0\000"..., 512) = 512
| fstat64(3, {st_mode=S_IFREG|0644, st_size=134496, ...}) = 0
| old_mmap(NULL, 136976, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x4002f000
| old_mmap(0x40050000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x20000) = 0x40050000
| close(3) = 0
| access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
| open("/lib/tls/libc.so.6", O_RDONLY) = 3
| read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0`Z\1\000"..., 512) = 512
| fstat64(3, {st_mode=S_IFREG|0755, st_size=1254660, ...}) = 0
| old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40051000
| old_mmap(NULL, 1264972, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x40052000
| old_mmap(0x4017c000, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x129000) = 0x4017c000
| old_mmap(0x40185000, 7500, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x40185000
| close(3) = 0
| set_thread_area({entry_number:-1 -> 6, base_addr:0x40051ac0, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0
| munmap(0x40018000, 16548) = 0
| set_tid_address(0x40051b08) = 28221
| rt_sigaction(SIGRTMIN, {0x400245d0, [], SA_RESTORER|SA_SIGINFO, 0x4002aaf0}, NULL, 8) = 0
| rt_sigprocmask(SIG_UNBLOCK, [RTMIN], NULL, 8) = 0
| getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM_INFINITY}) = 0
| rt_sigaction(SIGUSR1, {0x8052930, [ABRT USR1], SA_RESTORER|SA_NOMASK|SA_SIGINFO, 0x4002aaf0}, {SIG_DFL}, 8) = 0
| rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
| getpid() = 28221
| kill(28221, SIGUSR1) = 0
| --- SIGUSR1 (User defined signal 1) @ 0 (0) ---
| rt_sigprocmask(SIG_BLOCK, [], [], 8) = 0
| rt_sigreturn(0x6e3d) = 0
| rt_sigaction(SIGUSR1, {SIG_DFL}, NULL, 8) = 0
| rt_sigprocmask(SIG_BLOCK, [HUP INT QUIT USR1 USR2 PIPE ALRM CHLD TSTP URG XCPU XFSZ VTALRM PROF WINCH IO RT_1 RT_2], NULL, 8) = 0
| uname({sys="Linux", node="vs2061208.vserver.de", ...}) = 0
| futex((nil), FUTEX_WAIT, -1, NULL) = -1 EFAULT (Bad address)
| mmap2(0x1000000, 41938944, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x1000000
| mmap2(0x5000000, 50327552, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x5000000
| mmap2(0x9000000, 536870912, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = -1 ENOMEM (Cannot allocate memory)
| dup(2) = 3
| fcntl64(3, F_GETFL) = 0x8002 (flags O_RDWR|O_LARGEFILE)
| brk(0) = 0x817e000
| brk(0x819f000) = 0x819f000
| brk(0) = 0x819f000
| fstat64(3, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0
| mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40018000
| _llseek(3, 0, 0xbfffda78, SEEK_CUR) = -1 ESPIPE (Illegal seek)
| write(3, "mmap: Cannot allocate memory\n", 29mmap: Cannot allocate memory
| ) = 29
| close(3) = 0
| munmap(0x40018000, 4096) = 0
| write(2, "ensure_space: failed to validate"..., 63ensure_space: failed to validate 536870912 bytes at 0x09000000
| ) = 63
| write(2, "(hint: Try \"ulimit -a\"; maybe yo"..., 66(hint: Try "ulimit -a"; maybe you should increase memory limits.)
| ) = 66
| exit_group(1)
`----
--
Otto Diesenbacher ···················@gmail.com
Salzburg, Austria http://okflo.homelinux.net/ From: aka
Subject: Re: troubles getting sbcl run on a vserver
Date: Tue, 19 Sep 2006 05:59:36 +0000
Message-ID: <1158645576.679637.60580@b28g2000cwb.googlegroups.com> >
> i tried to run sbcl on my newly rented web-vserver. I am not shure
> what kind of virtualisation my provider is using.
>
My provider uses Xen virtualizer and I had similar problem. After
running dmesg there is the warning which says: "To ensure full
performance you should install a 'xen-friendly' (nosegneg) version of
the library, or disable tls support by executing the following as root:
mv /lib/tls /lib/tls.disabled", and I found /lib/tls directory renamed.
Also, maybe you don't have glibc with nptl built at all, so you just
need to rebuild it.
Hope this helps ...
--aka From: Robert Dodier
Subject: Re: troubles getting sbcl run on a vserver
Date: Tue, 19 Sep 2006 19:47:59 +0000
Message-ID: <1158695279.478771.251240@e3g2000cwe.googlegroups.com> Otto Diesenbacher wrote:
> ,----
> | mmap: Cannot allocate memory
> | ensure_space: failed to validate 536870912 bytes at 0x09000000
> | (hint: Try "ulimit -a"; maybe you should increase memory limits.)
> `----
I ran into this problem (or one just like it) on a Fedora system.
This message:
http://article.gmane.org/gmane.lisp.steel-bank.general/874
suggests some things to try. I found that
echo 0 > /proc/sys/kernel/exec-shield
fixes the problem. But you have to be superuser to do that.
FWIW
Robert Dodier