From: Otto Diesenbacher
Subject: troubles getting sbcl run on a vserver
Date: 
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: 
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: 
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