On Mon, Sep 16, 2002 at 03:38:22PM +0400, Alexey Dejneka wrote:
> > Um. Is this just me?
> > $ src/runtime/sbcl --core output/sbcl.core
> > [...]
> > * (save-lisp-and-die "/tmp/sbcl.core")
> > [...]
> > $ src/runtime/sbcl --core /tmp/sbcl.core
> > [ attempts to jump to 0x0 and execute from there; infinite SIGSEGV as
> > viewed from strace ]
> > The above happens to me on x86/Linux with at least 0.7.7.x builds; I
> > haven't yet investigated how far back this goes; it does _not_ happen to
> > me on SPARC/SunOS.
> I can add that saving/restarting works with 0.7.5 and fails with
> 0.7.6.3 (x86/Linux).
I've done a little more investigating (though sadly not enough to
diagnose the problem).
As Alexey says, saving/restarting works with 0.7.5; however, if you
remember, I've already encountered these symptoms once, back when I was
looking at the MAP/MERGE/CONCATENATE problem; there, the behaviour was
this same symptom (jump to 0x0 from call_into_lisp), but this time in
the core saved after building PCL.
So, I tried applying the sequence patch to 0.7.5, and sure enough, the
resulting core did not run. However, with 0.7.2 + sequence patch, no
such symptoms have been observed; it builds, runs and saves and restarts
without apparent trouble.
Other reports say Alpha does not experience this problem; I can see two
1. This bug (presuming that the current woes and my sequence patch woes
are related) has always been present, but is tickled in only a small
region of parameter space (for a particular number of pages in dynamic
space, or an off-by-one error somewhere, or some such)
2. Something we've done, probably between 0.7.2 and 0.7.5, has upset an
invariant somewhere which allows this behaviour to occur.
The fact that this happens only on x86 is significant in that it points
perhaps to gc or purify, which both have significant differences in
behaviour on the x86 than on other platforms...
Any bright ideas?
Jesus College, Cambridge, CB5 8BL +44 1223 510 299
http://www-jcsu.jesus.cam.ac.uk/~csr21/ (defun pling-dollar
(str schar arg) (first (last +))) (make-dispatch-macro-character #\! t)
(set-dispatch-macro-character #\! #\$ #'pling-dollar)