Hi there,
Apologies if this is a FAQ, although I searched the web and did not
see anything immediately apropos.
I seem to get the following error fairly often, when running my program:
---
fatal error encountered in SBCL pid 2226(tid 46912496231472):
An mprotect call failed with ENOMEM. This probably means that the
maximum amount
of separate memory mappings was exceeded. To fix the problem, either increase
the maximum with e.g. 'echo 262144 > /proc/sys/vm/max_map_count' or recompile
SBCL with a larger value for GENCGC-PAGE-SIZE in 'src/target/parms.lisp'.
Welcome to LDB, a low-level debugger for the Lisp runtime environment.
---
This is a pre-compiled SBCL 1.0.25, running on linux x86-64 (AMD).
I've been starting it up with a large amount of memory available
(--dynamic-space-size 120000), although the program isn't using
anywhere near that much right now, that was just for testing large
allocations and I left the value in my shell script. Changing this
to a smaller amount (32,000 MB) didn't help.
I have some sysadmin rights on this machine, so I may be able to
change that value. But, I also looked at following the advice of the
error message. Contrary to this post:
http://article.gmane.org/gmane.lisp.steel-bank.general/2185/match=enomem
I don't see the string "GENCGC-PAGE-SIZE" appearing anywhere in the
SBCL 1.0.25 source, except for in that linux warning message.
I think I have two questions:
1. Is this error message actually descriptive of the real problem, or
should I be looking elsewhere on my system or in my code?
2. If I did recompile SBCL, is there something I could change to
affect this behavior?
thanks,
Michael
---
mrh3@...
|