On Tue, Jan 13, 2009 at 3:24 PM, Prabhat Ranjan
> I am getting this error while trying to run sbcl 1.0.22 on Windows xp.
> C:\Program Files\Steel Bank Common Lisp\1.0.22>sbcl --dynamic-space-size 980
> VirtualAlloc: 0x1e7.
> ensure_space: failed to validate 1027604480 bytes at 0x22300000
> <hint: Try "ulimit -a" may be you should increase memory limits>
> When I decrease the dynamic space size to 940 it works fine. We have a lisp
> file which requires 978 mb for compilation. So we need to run sbcl with
> space size of more than 980 mb.
> Please look into this and let me know if some solution exists for this
> issue. I found a bug already filed for this issue as
A few ways to go:
* As a baldfaced workaround you can try to reduce consing during
compilation of that file, or possibly split it into multiple files.
(Actually, I'd be interested in seeing the file in question: maybe
this is something that can be addressed in SBCL itself.)
* You can try to adjust the addresses in src/compiler/x86/parms.lisp,
the #!+win32 part, that is. This is somewhat a black art, but the goal
is to find a sufficiently large contiguous address space that isn't
taken up by eg. DLLs for use by the dynamic space. This requires
rebuilding SBCL, but will make larger heap sizes possible for you.
* You can try to figure out what is residing in the space above
dynamic-space, and try to coax Windows to put it somewhere else. (I
don't know which tools to use or how to use them, but I have the
impression that such tools exist.)
* As for a long-term solution, David Lichteblau has a branches where
address space management is more flexible, including (IIRC) support
for non-contiguous spaces. I'm not sure what the status of the work in
general is, let alone how it deals with Windows -- but it is there.