From: David S. <da...@da...> - 2004-04-29 11:44:56
|
Raymond Wiker <Ray...@fa...> writes: > Nikodemus Siivola writes: > > > > SB-LDB is pretty much all C code, so to my mind it's magical effect > > suggests GCC trouble. > > Since this is MacOSX... > > ... what does gcc_select say? My PowerBook is set up to use gcc 3.1, > and I have built SBCL relatively recently (0.8.9.48). On my system: $ gcc_select Current default compiler: gcc version 3.3 20030304 (Apple Computer, Inc. build 1495) Also, with or without :sb_ldb I get the same cold-sbcl.core size: $ ls -l output/cold-sbcl.core ~/tmp/sbcl/output/cold-sbcl.core -rw-r--r-- 1 david staff 23228416 29 Apr 03:01 /Users/david/tmp/sbcl/output/cold-sbcl.core -rw-r--r-- 1 david staff 23228416 29 Apr 06:15 output/cold-sbcl.core Unfortunately, they diff different. I guess timestamp info or something is getting in there. According to grep, there are only three files with LISP_FEATURE_SB_LDB: $ find src -name '*.c' -exec grep -l LISP_FEATURE_SB_LDB {} \; src/runtime/monitor.c src/runtime/parse.c src/runtime/print.c monitor.c contains the function that prints out the hard luck message when the build without :sb-ldb tries to do the warm init before purification. The other two do nothing without the define. I don't really think this is a bug in GCC, but I guess anything is possible until this is cracked. Right now, I am thinking that the purify process might be borked somehow. But that is just a wild guess as it is around that time that the signal 4 (SIGILL) doesn't get handled with the build that fails. I don't know if the purify is pure Lisp or involves C. I wouldn't expect any changes to that recently, so I am probably wrong in guessing that is the problem. Really what needs to be done is to run the src/runtime/sbcl file in gdb (with debug info having been included and no optimization) as it is run by make-target-2.sh: ./src/runtime/sbcl \ --core output/cold-sbcl.core \ --sysinit /dev/null --userinit /dev/null <<-'EOF' || exit 1 ;; Now that we use the compiler for macros, interpreted ;; /SHOW doesn't work until later in init. #+sb-show (print "/hello, world!") (sb!ext:purify) That should be far enough to trigger the SIGILL. If I knew gdb, I would be on it right now. I wonder if this can be setup in Xcode? That has a nice front end to gdb. Actually, I think I would have a userinit file that contains the sb-show and purify forms so that gdb could just be fired up with src/runtime/sbcl as its arg with the command line args in place. What is the normal procedure for this? Or does each developer have his own preference? Hmmm. Marvel Comics just called me to say that Captain Obvious is their trademarked super hero. Oh well. I better not post this. -- I wouldn't mind the rat race so much if it wasn't for all the damn cats. |