Re: defvar and reboots
Frode Vatvedt Fjeld <[email protected]> Mon, 30 May 2005 00:15:21 +0200
| Newsgroups | gmane.lisp.movitz.devel |
|---|---|
| Message-ID | <[email protected]> |
Shawn Betts <[email protected]> writes: > I've found that in some cases defvar and defparameter cause movitz > to reboot upon loading. initializing the variable with nil a number > seems to work fine, but a cons or a function call causes a > reboot. The following causes a reboot: > > (defvar *commands* (make-hash-table) > "A hash table of commands") A reboot I would guess means an exception is triggered before exception-handlers are installed. And that exception I guess would be triggered by trying to allocate memory (as make-hash-table obviously does) before dynamic memory allocation is initialized. Verify that your file with the defvar top-level form comes after at least lib/malloc-init (but preferrably also the other two, muerte/print and x86-pc/textmode, and whatever you have that is equivalent to the genesis function in los0.lisp) in the load-sequence that gets printed at dump-time. Just now I tried to add such a defvar to los0.lisp, and it turns out that make-hash-table also requires CLOS to be bootstrapped, and if that wasn't already done (explicitly) then the kernel would die, though slightly more gracefully than just rebooting. I just checked in a couple of tweaks that fixes this behavior, so that now only some warnings should be seen (about auto-bootstrapping CLOS) in such cases. -- Frode Vatvedt Fjeld