I suspect that this is because your application is overflowing the
available static space, then corrupting dynamic space.
I added assertions to purify.c to check for overflow of the static
space during purification, and your purify-test.lisp that previously
caused the same symptoms as you have been seeing now trigger these
assertions, inside ptrans_vector. My testing has been on x86/Linux;
I'll check on Solaris tomorrow.
CMUCL is unfortunately not able to resize these spaces dynamically, so
the only solutions I see for your problem are:
(1) you build a customized version of CMUCL with a sufficiently large
static space. I don't think it would be reasonable to increase
the default sizes much, because doing so would reduce the
available dynamic space, which wouldn't be good for most users.
(2) we find some way of disabling purification for certain data types
(apparently code objects in your case), so that you can use a
normal CMUCL build with partial purification.
(3) we find the bug that prevents restarting of unpurified images (I
think that this has been fixed in SBCL). Unpurified images will
be noticeably slower, though.
Version (1) requires cross-compiling CMUCL. Perhaps you would prefer
paying a CMUCL developer to do this for you on a contract basis.
--
Eric Marsden <URL:http://www.laas.fr/~emarsden/>