|
From: Nikodemus S. <nik...@ra...> - 2009-01-17 10:43:36
|
On Tue, Jan 13, 2009 at 3:24 PM, Prabhat Ranjan <pra...@ve...> wrote: > Hello, > > 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 > http://www.archivesat.com/Steel_Bank_Common_Lisp_(SBCL)/thread2297905.htm 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. Cheers, -- Nikodemus |