
On Mon, 18 Dec 2006 15:24:09 -0700, "Robert J. Macomber" <tbnl@rojoma.com> wrote:
So I guess the answer is "don't do that then", at least for now. Putting your startup call in a :after method on asdf:perform doesn't seem to work either, but deferring the startup into a thread of its own (i.e., instead of a toplevel (startup) do (make-thread 'startup)) lets the locks all get released.
Ah, OK. Thanks for the detective work. By coincidence I came across a similar case last Friday. Another, SBCL-specific, workaround is to add a file precompile.lisp to your ASDF system definition that is guaranteed to be the very last file to be compiled and loaded (and that is also guaranteed to be re-compiled whenever something changes in the rest of the system). This file should contain only one form: (sb-pcl::precompile-random-code-segments) I don't think this is documented or officially endorsed by the SBCL developers, but it should pre-compile optimized constructors and other CLOS functions.