Le dimanche 10 décembre 2006 à 10:16 -0600, Gabriel Dos Reis a écrit : [...]
> start address -T 10629000 Finished loading xrun.o > Loading interop.o > start address -T 1062f000 Finished loading interop.o > Loading patches.o > start address -T 10638000 Finished loading patches.o > Using local database ../../../axiom.bi/src/share/algebra/compress.daase.. > Re-reading compress.daase Using local database > ../../../axiom.bi/src/share/algebra/interp.daase.. Re-reading interp.daase > > Error: Caught fatal error [memory may be damaged] > Fast links are on: do (si::use-fast-links nil) for debugging > Error signalled by RETURN. > Broken at APPLY. Type :H for Help. The segfault occurs in cacheKeyedMsg (src/interp/patches.lisp). This is a path problem, |fetchKeyedMsg| (patches.lisp) calls cacheKeyedMsg with |$defaultMsgDatabaseName| as argument. This argument is a pathname (path to target/*/share/msg/s2-us.msgs). GCL can not open this file since it's a unix path (/some/where) and segfault (I don't know where). With GCL on Windows you have to use mixed path (c:/some/where) (I know that truename accept Windows path with two backslash as separator (c:\\some\\where) so may be other functions too). I don't know exactly where is the problem but you're rerooting (function reroot) Axiom when you compile some interpreter's files. Reroot accepts an argument which has to be the root of Axiom. You give him (to reroot) a unix path and that's a problem (consequently $spadroot is wrong). $spadroot is used everywhere to create path relative to it so may be this is the problem ($spadroot is used to define | $defaultMsgDatabaseName|). Now the last thing, AxiomForWindows uses 'pwd -W' to define the SPAD variable, pwd -W gives an acceptable path for GCL. Hope that helps, Greg PS : It was not too difficult to find the problem I have some problems actually with files on Windows (user-homedir-pathname) returns '~/' (not the path that I want :-) and I had, last week, some problems with the 'start' function (this is the function that display startup messages and triggers your bug). ====================================================================== Variables and their definitions in AxiomForWindows when building Axiom in the /home/greg/AxiomOnWindows directory SPAD=C:/MinGW/MSYS/home/greg/AxiomOnWindows/mnt/ SYS= SPD=C:/MinGW/MSYS/home/greg/AxiomOnWindows LSP=C:/MinGW/MSYS/home/greg/AxiomOnWindows/lsp GCLDIR=C:/MinGW/MSYS/home/greg/AxiomOnWindows/lsp/gcl-2.6.5w SRC=C:/MinGW/MSYS/home/greg/AxiomOnWindows/src INT=C:/MinGW/MSYS/home/greg/AxiomOnWindows/int OBJ=C:/MinGW/MSYS/home/greg/AxiomOnWindows/obj MNT=C:/MinGW/MSYS/home/greg/AxiomOnWindows/mnt ZIPS=/home/greg/AxiomOnWindows/zips TMP=C:/MinGW/MSYS/home/greg/AxiomOnWindows/obj/tmp SPADBIN=C:/MinGW/MSYS/home/greg/AxiomOnWindows/mnt//bin INC=C:/MinGW/MSYS/home/greg/AxiomOnWindows/src/include CCLBASE=C:/MinGW/MSYS/home/greg/AxiomOnWindows/obj//ccl/ccllisp PART=cprogs SUBPART=everything NOISE=-o C:/MinGW/MSYS/home/greg/AxiomOnWindows/obj/tmp/trace GCLVERSION=gcl-2.6.5w TANGLE=C:/MinGW/MSYS/home/greg/AxiomOnWindows/mnt//bin/lib/notangle =============== ================= =============== Makefile ================= =============== ================= SPD=$(shell pwd -W) SYS=$(notdir $(AXIOM)) SPAD=${SPD}/mnt/${SYS} LSP=${SPD}/lsp #GCLVERSION=gcl-2.4.1 #GCLVERSION=gcl-2.5 #GCLVERSION=gcl-2.5.2 #GCLVERSION=gcl-2.6.1 #GCLVERSION=gcl-2.6.2 #GCLVERSION=gcl-2.6.2a #GCLVERSION=gcl-2.6.3 GCLVERSION=gcl-2.6.5w AWK=gawk GCLDIR=${LSP}/${GCLVERSION} SRC=${SPD}/src INT=${SPD}/int OBJ=${SPD}/obj MNT=${SPD}/mnt ZIPS=${shell pwd}/zips TMP=${OBJ}/tmp SPADBIN=${MNT}/${SYS}/bin INC=${SPD}/src/include CCLBASE=${OBJ}/${SYS}/ccl/ccllisp INSTALL=/usr/local/axiom COMMAND=${INSTALL}/mnt/${SYS}/bin/axiom TANGLE=${SPADBIN}/lib/notangle NOISE="-o ${TMP}/trace" PART= cprogs SUBPART= everything ENV= SPAD=${SPAD} SYS=${SYS} SPD=${SPD} LSP=${LSP} GCLDIR=${GCLDIR} \ SRC=${SRC} INT=${INT} OBJ=${OBJ} MNT=${MNT} ZIPS=${ZIPS} TMP=${TMP} \ SPADBIN=${SPADBIN} INC=${INC} CCLBASE=${CCLBASE} PART=${PART} \ SUBPART=${SUBPART} NOISE=${NOISE} GCLVERSION=${GCLVERSION} \ TANGLE=${TANGLE} all: noweb litcmds @ echo 1 making a ${SYS} system, PART=${PART} SUBPART=${SUBPART} @ echo 2 Environment ${ENV} @ ${TANGLE} -t8 -RMakefile.${SYS} Makefile.pamphlet >Makefile.${SYS} @ ${ENV} $(MAKE) -f Makefile.${SYS} @echo 3 finished system build on `date` | tee >lastBuildDate start: noweb litcmds book: @ echo 79 building the book as ${MNT}/${SYS}/doc/book.dvi @ mkdir -p ${TMP} @ mkdir -p ${MNT}/${SYS}/doc @ cp ${SRC}/doc/book.pamphlet ${MNT}/${SYS}/doc @ cp -pr ${SRC}/doc/ps ${MNT}/${SYS}/doc @ (cd ${MNT}/${SYS}/doc ; \ if [ .${NOISE} = . ] ; then \ ( latex book.pamphlet --interaction nonstopmode ; \ latex book.pamphlet --interaction nonstopmode ) ; \ else \ ( latex book.pamphlet --interaction nonstopmode >${TMP}/trace ; \ latex book.pamphlet --interaction nonstopmode >${TMP}/trace ) ; \ fi ; \ rm book.pamphlet ; \ rm book.toc ; \ rm book.log ; \ rm book.aux ) @ echo 80 The book is at ${MNT}/${SYS}/doc/book.dvi noweb: @echo 13 making noweb @mkdir -p ${OBJ}/noweb @mkdir -p ${TMP} @mkdir -p ${MNT}/${SYS}/bin/lib @( cd ${OBJ}/noweb ; \ tar -zxf ${ZIPS}/noweb-2.10a.tgz ; \ cd ${OBJ}/noweb/src/c ; \ patch <${ZIPS}/noweb.modules.c.patch ; \ cd ${OBJ}/noweb/src ; \ ./awkname ${AWK} ; \ patch <${ZIPS}/noweb.src.Makefile.patch ; \ ${ENV} ${MAKE} BIN=${MNT}/${SYS}/bin/lib LIB=${MNT}/${SYS}/bin/lib \ MAN=${MNT}/${SYS}/bin/man \ TEXINPUTS=${MNT}/${SYS}/bin/tex all install >${TMP}/trace ) @echo The file marks the fact that noweb has been made > noweb nowebclean: @echo 14 cleaning ${OBJ}/noweb @rm -rf ${OBJ}/noweb @rm -f noweb litcmds: @echo 0 ${ENV} @echo 10 copying ${SRC}/scripts to ${MNT}/${SYS}/bin @cp -pr ${SRC}/scripts/* ${MNT}/${SYS}/bin install: @echo 78 installing Axiom in ${INSTALL} @mkdir -p ${INSTALL} @cp -pr ${MNT} ${INSTALL} @echo AXIOM=${INSTALL}/mnt/${SYS} >${COMMAND} @cat ${SRC}/etc/axiom >>${COMMAND} @chmod +x ${COMMAND} @echo 79 Axiom installation finished. @echo @echo Please add $(shell dirname ${COMMAND}) to your PATH variable @echo Start Axiom with the command $(shell basename ${COMMAND}) @echo document: noweb litcmds @ echo 4 making a ${SYS} system, PART=${PART} SUBPART=${SUBPART} @ echo 5 Environment ${ENV} @ ${TANGLE} -t8 -RMakefile.${SYS} Makefile.pamphlet >Makefile.${SYS} @ ${ENV} $(MAKE) -f Makefile.${SYS} document @echo 6 finished system build on `date` | tee >lastBuildDate clean: noweb litcmds @ echo 7 making a ${SYS} system, PART=${PART} SUBPART=${SUBPART} @ echo 8 Environment ${ENV} @ ${TANGLE} -t8 -RMakefile.${SYS} Makefile.pamphlet >Makefile.${SYS} @ ${ENV} $(MAKE) -f Makefile.${SYS} clean @ rm -f noweb @ rm -f *~ @echo 9 finished system build on `date` | tee >lastBuildDate $spadroot is set to a unix path (/some/where) > ============================ > > > To get to that point I have to disable calls to apply the patch (at > the end of this message) to src/interp/patches.lisp.pamphlet. > > Suggestions? > > -- Gaby > > > *** usbdisk_2/cas/axiom/bi/src/interp/patches.lisp.pamphlet 2006-11-30 > 15:51:12.000000000 -0600 > --- usbdisk/axiom.bi/src/interp/patches.lisp.pamphlet 2006-12-10 > 08:59:50.000000000 -0600 > *************** previous definition. > *** 342,352 **** > (setq returncode 0)) > (unless (zerop returncode) (bye returncode))))) > > ! #+:dos > (setq vmlisp::$current-directory (truename ".")) > #+:dos > (setq vmlisp::$spadroot "/spad/mnt/dos") > ! #+:dos > (defun user-homedir-pathname () > (truename ".")) > > --- 342,352 ---- > (setq returncode 0)) > (unless (zerop returncode) (bye returncode))))) > > ! #+(or :dos :win32) > (setq vmlisp::$current-directory (truename ".")) > #+:dos > (setq vmlisp::$spadroot "/spad/mnt/dos") > ! #+(or :dos :win32) > (defun user-homedir-pathname () > (truename ".")) > > *************** previous definition. > *** 379,385 **** > > (defun |makeList| (size el) (make-list size :initial-element el) ) > > ! #+:akcl > (defun print-xdr-stream (x y z) (format y "XDR:~A" (xdr-stream-name x))) > #+:akcl > (defstruct (xdr-stream > --- 379,385 ---- > > (defun |makeList| (size el) (make-list size :initial-element el) ) > > ! #+:ackl > (defun print-xdr-stream (x y z) (format y "XDR:~A" (xdr-stream-name x))) > #+:akcl > (defstruct (xdr-stream > *************** previous definition. > *** 387,411 **** > "A structure to hold XDR streams. The stream is printed out." > (handle ) ;; this is what is used for xdr-open xdr-read xdr-write > (name )) ;; this is used for printing > ! #+:akcl > (defun |xdrOpen| (str dir) (make-xdr-stream :handle (system:xdr-open str) > :name str)) > #+:CCL > (defun |xdrOpen| (str dir) (xdr-open str dir) ) > ! #+:dos > (defun |xdrOpen| (str dir) (format t "xdrOpen called")) > > ! #+:akcl > (defun |xdrRead| (xstr r) (system:xdr-read (xdr-stream-handle xstr) r) ) > #+:CCL > (defun |xdrRead| (xstr r) (xdr-read xstr r) ) > ! #+:dos > (defun |xdrRead| (str) (format t "xdrRead called")) > > ! #+:akcl > (defun |xdrWrite| (xstr d) (system:xdr-write (xdr-stream-handle xstr) d) ) > #+:CCL > (defun |xdrWrite| (xstr d) (xdr-write xstr d) ) > ! #+:dos > (defun |xdrWrite| (str) (format t "xdrWrite called")) > > ;; here is a test for XDR > --- 387,411 ---- > "A structure to hold XDR streams. The stream is printed out." > (handle ) ;; this is what is used for xdr-open xdr-read xdr-write > (name )) ;; this is used for printing > ! #+(and :akcl (not (or :dos :win32))) > (defun |xdrOpen| (str dir) (make-xdr-stream :handle (system:xdr-open str) > :name str)) > #+:CCL > (defun |xdrOpen| (str dir) (xdr-open str dir) ) > ! #+(or :dos :win32) > (defun |xdrOpen| (str dir) (format t "xdrOpen called")) > > ! #+(and :akcl (not (or :dos :win32))) > (defun |xdrRead| (xstr r) (system:xdr-read (xdr-stream-handle xstr) r) ) > #+:CCL > (defun |xdrRead| (xstr r) (xdr-read xstr r) ) > ! #+(or :dos :win32) > (defun |xdrRead| (str) (format t "xdrRead called")) > > ! #+(and :akcl (not (or :dos :win32))) > (defun |xdrWrite| (xstr d) (system:xdr-write (xdr-stream-handle xstr) d) ) > #+:CCL > (defun |xdrWrite| (xstr d) (xdr-write xstr d) ) > ! #+(or :dos :win32) > (defun |xdrWrite| (str) (format t "xdrWrite called")) > > ;; here is a test for XDR > > > _______________________________________________ > Axiom-developer mailing list > Axiom-developer@nongnu.org > http://lists.nongnu.org/mailman/listinfo/axiom-developer > _______________________________________________ Gcl-devel mailing list Gcl-devel@gnu.org http://lists.gnu.org/mailman/listinfo/gcl-devel