From: Camille T. <tus...@ma...> - 2003-11-11 23:45:38
|
Hi, I would like to give you a report of my experimentations of building SBCL on Mac OS X. I have tried to compile sbcl 0.8.5 on Mac OS 10.3.1, using openmcl 0.14 (november 8th 2003 build) as cross-compiler. Everything ran fine until the build log showed this line: make-target-2.sh: line 90: 28413 Bus error ./src/runtime/sbcl --core output/cold-sbcl.core --sysinit /dev/null --userinit /dev/null <<-'EOF' The file sbcl.core has not been produced, thus the sbcl executable cannot work. If I execute sbcl from the shell, I the same Bus Error. If I GDB the sbcl executable, I get the following : Vanille:~/Desktop/LISP/sbcl-0.8.5/src/runtime camille$ gdb sbcl [...] (gdb) run Starting program: /Users/camille/Desktop/LISP/sbcl-0.8.5/src/runtime/sbcl Reading symbols for shared libraries . done fatal error encountered in SBCL pid 28463: can't find core file Program exited with code 01. (gdb) The file output/cold-sbcl.core exists, though. If I try to GDB sbcl with the cold-sbcl.core core file, I get into a Bus Error, but i can't get interesting conclusion from that. Here is the stacktrace : (gdb) run --core output/cold-sbcl.core --sysinit /dev/null --userinit /dev/null Starting program: /Users/camille/Desktop/LISP/sbcl-0.8.5/src/runtime/sbcl --core output/cold-sbcl.core --sysinit /dev/null --userinit /dev/null Reading symbols for shared libraries . done This is SBCL 0.8.5, an implementation of ANSI Common Lisp. SBCL is derived from the CMU CL system created at Carnegie Mellon University. Besides software and documentation originally created at Carnegie Mellon University, SBCL contains some software originally from the Massachusetts Institute of Technology, Symbolics Incorporated, and Xerox Corporation, and material contributed by volunteers since the release of CMU CL into the public domain. See the CREDITS file in the distribution for more information. SBCL is a free software system, provided as is, with absolutely no warranty. It is mostly in the public domain, but also includes some software copyrighted Massachusetts Institute of Technology, 1986; Symbolics, Inc., 1989, 1990, 1991, 1992; and Xerox Corporation, 1985, 1986, 1987, 1988, 1989, 1990 used under BSD-style licenses allowing copying only under certain conditions. See the COPYING file in the distribution for more information. More information about SBCL is available at <http://sbcl.sourceforge.net/>. Program received signal EXC_BAD_INSTRUCTION, Illegal instruction/operand. 0x01000018 in ?? () (gdb) bt #0 0x01000018 in ?? () #1 0x401c5844 in ?? () #2 0x00008a34 in main (argc=1074540455, argv=0x400c2fa7, envp=0x4ff8168) at runtime.c:357 (gdb) Thanks for providing SBCL ! I hope this small report will help. Camille --------------- FYI, here is the build log where the build error occured. [...] obj/from-xc/src/code/early-setf.lisp-obj obj/from-xc/src/code/macros.lisp-obj obj/from-xc/src/code/loop.lisp-obj obj/from-xc/src/code/late-setf.lisp-obj obj/from-xc/src/code/late-format.lisp-obj obj/from-xc/src/code/sxhash.lisp-obj obj/from-xc/src/code/signal.lisp-obj obj/from-xc/src/code/late-defbangmethod.lisp-obj obj/from-xc/src/pcl/walk.lisp-obj [building initial core file in "output/cold-sbcl.core": writing 4096 bytes [1 page] from #<GSPACE :READ-ONLY> writing 4096 bytes [1 page] from #<GSPACE :STATIC> writing 22843392 bytes [5577 pages] from #<GSPACE :DYNAMIC> /(DESCRIPTOR-BITS INITIAL-FUN)=#X414C666D done] ? //testing for consistency of first and second GENESIS passes //header files match between first and second GENESIS -- good //entering make-target-2.sh //doing warm init make-target-2.sh: line 90: 28413 Bus error ./src/runtime/sbcl --core output/cold-sbcl.core --sysinit /dev/null --userinit /dev/null <<-'EOF' ;; 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) ;; Until PRINT-OBJECT and other machinery is set up, ;; we want limits on printing to avoid infinite output. ;; (Don't forget to undo these tweaks after the printer ;; is set up. It'd be cleaner to use LET to make sure ;; that happens automatically, but LET is implemented ;; in terms of the compiler, and the compiler isn't ;; initialized yet.) (setq *print-length* 10) (setq *print-level* 5) (setq *print-circle* t) ;; Do warm init. #+sb-show (print "/about to LOAD warm.lisp") (load "src/cold/warm.lisp") ;; Unintern no-longer-needed stuff before the possible PURIFY ;; in SAVE-LISP-AND-DIE. #-sb-fluid (sb-impl::!unintern-init-only-stuff) ;; Now that the whole system is built, we don't need to ;; hobble the printer any more, so we can restore printer ;; control variables to their ANSI defaults. (setq *print-length* nil) (setq *print-level* nil) (setq *print-circle* nil) ;; FIXME: Why is it that, at least on x86 sbcl-0.6.12.46, ;; GC :FULL T isn't nearly as effective as PURIFY here? ;; (GC :FULL T gets us down to about 38 Mbytes, but PURIFY ;; gets us down to about 19 Mbytes.) (sb-int:/show "done with warm.lisp, about to GC :FULL T") (gc :full t) ;; resetting compilation policy to neutral values in ;; preparation for SAVE-LISP-AND-DIE as final SBCL core (not ;; in warm.lisp because SB-C::*POLICY* has file scope) (sb-int:/show "setting compilation policy to neutral values") (proclaim '(optimize (compilation-speed 1) (debug 1) (inhibit-warnings 1) (safety 1) (space 1) (speed 1))) (sb-int:/show "done with warm.lisp, about to SAVE-LISP-AND-DIE") ;; Even if /SHOW output was wanted during build, it's probably ;; not wanted by default after build is complete. (And if it's ;; wanted, it can easily be turned back on.) #+sb-show (setf sb-int:*/show* nil) ;; The system is complete now, all standard functions are ;; defined. (setq sb-c::*flame-on-necessarily-undefined-function* t) (sb-ext:save-lisp-and-die "output/sbcl.core" :purify t) EOF |