> Greetings, and thanks!
> 
> Please be advised that nth at safety 0 will still segfault if you try
> to cdr past the dot.  
> 
> I'd like to take a look at the below, but I'm not sure my tree is in
> sync with yours.  Have you committed everything?  If so, how to I
> update with svn?  Anything else I need to reproduce the error below?
> 

I am working still with revision 636, the same tree where I applied
several patches:

1) change to axiom-probe-file
2) spaderror patch
3) in several places I set si::*disable-recompile* to t
4) in NRTassocIndex elt is changed to nth
5) I skip initializing memory parameters

I did not commit those changes because most of patches is ATM
not aproproate in public version: 2 and 3 is 2.7.0 specific
4 will need more analysis/testing, 5 increased safe build time
from 8 hours to 12 hours (measured using 2.6.8 on 1.86 Intel
Core Duo) -- again I feel that effect of parameters needs
more analysis/testing.

The segfault is in safety 1 code -- given your description
I expect that nth may still segfault at safety 1 if the dotted
list is too short.

I suspect that segfault may be non-reproducible: I got segfault
earlier and after restarting make the build went further.

I am somewhat reluctant to redo the step with segfault, as it
took 3 hours to go trough that stage and it seems that I will
be unable to debug the segfault even if I reproduce it

I am now checking if the second problem (miscompilation) is
reproducible.

Attached you will find diff between build tree and revision 636.

-- 
                              Waldek Hebisch
[EMAIL PROTECTED] 
Index: src/interp/spaderror.lisp.pamphlet
===================================================================
--- src/interp/spaderror.lisp.pamphlet  (wersja 636)
+++ src/interp/spaderror.lisp.pamphlet  (kopia robocza)
@@ -48,14 +48,14 @@
 
 ;; this files contains basic routines for error handling
 (in-package "BOOT")
-
+#|
 #+(or :GCL :CCL)
 (defun error-format (message args)
   (let ((|$BreakMode| '|break|))
     (declare (special |$BreakMode|))
    (if (stringp message) (apply #'format nil message args) nil)))
+|#
 
-#-(or :GCL :CCL)
 (defun error-format (c)
   (let ((|$BreakMode| '|break|))
     (declare (special |$BreakMode|))
@@ -79,6 +79,7 @@
 
 ;; following macro evaluates form returning Union(type-of form, "failed")
 
+#|
 #+:GCL
 (defmacro |trapNumericErrors| (form)
   `(let ((|$oldBreakMode| |$BreakMode|)
@@ -87,8 +88,8 @@
      (setq val (catch '|trapNumerics| ,form))
      (if (eq val |$numericFailure|) val
        (cons 0 val))))
+|#
 
-#-(or :GCL :CCL)
 (defmacro |trapNumericErrors| (form)
     `(handler-case (cons 0 ,form)
          (arithmetic-error () |$numericFailure|)))
@@ -99,7 +100,6 @@
 ;;      (setq val (errorset ,form))
 ;;      (if (NULL val) |$numericFailure| (cons 0 (car val)))))
 
-#-(or :GCL :CCL)
 (defun spad-system-error-handler (c)
   (block nil
     (setq |$NeedToSignalSessionManager| T)
@@ -115,7 +115,7 @@
                    (throw '|letPrint2| nil))))))
         
 
-
+#|
 ;; the following form embeds around the akcl error handler
 #+:GCL
 (eval-when
@@ -148,6 +148,7 @@
                (apply system:universal-error-handler type correctable? op
                       continue-string error-string args )))))
 
+|#
 
 
 
@@ -156,7 +157,6 @@
 
 
 
-
 @
 \eject
 \begin{thebibliography}{99}
Index: src/interp/interp-proclaims.lisp
===================================================================
--- src/interp/interp-proclaims.lisp    (wersja 636)
+++ src/interp/interp-proclaims.lisp    (kopia robocza)
@@ -2,6 +2,8 @@
 (progn
 (eval-when (:execute :compile-toplevel :load-toplevel)
              (proclaim '(optimize (safety 1))))
+(eval-when (:execute :compile-toplevel :load-toplevel)
+           (setf si::*disable-recompile* t))
 (IN-PACKAGE "USER") 
 (PROCLAIM '(FTYPE (FUNCTION (*) (VALUES T T)) BOOT:|ReadLine|)) 
 (PROCLAIM
Index: src/interp/Makefile.pamphlet
===================================================================
--- src/interp/Makefile.pamphlet        (wersja 636)
+++ src/interp/Makefile.pamphlet        (kopia robocza)
@@ -922,6 +922,7 @@
        @ echo 3 making ${DEPSYS} 
        @ $(mkinstalldirs) $(axiom_build_bindir)
        @ echo '${PROCLAIMS}' > makedep.lisp
+       echo '(setf si::*disable-recompile* t)' >> makedep.lisp
        @ echo '(push :oldboot *features*)' >> makedep.lisp
        @ echo '(load "nocompil.lisp")' >> makedep.lisp
        @ echo '(load "bookvol5.lisp")' >> makedep.lisp
Index: src/interp/Makefile.in
===================================================================
--- src/interp/Makefile.in      (wersja 636)
+++ src/interp/Makefile.in      (kopia robocza)
@@ -453,6 +453,7 @@
        @ echo 3 making ${DEPSYS} 
        @ $(mkinstalldirs) $(axiom_build_bindir)
        @ echo '${PROCLAIMS}' > makedep.lisp
+       echo '(setf si::*disable-recompile* t)' >> makedep.lisp
        @ echo '(push :oldboot *features*)' >> makedep.lisp
        @ echo '(load "nocompil.lisp")' >> makedep.lisp
        @ echo '(load "bookvol5.lisp")' >> makedep.lisp
Index: src/interp/bookvol5.pamphlet
===================================================================
--- src/interp/bookvol5.pamphlet        (wersja 636)
+++ src/interp/bookvol5.pamphlet        (kopia robocza)
@@ -682,9 +682,6 @@
   (setq |$currentLine| nil)
   (restart0)
   (|readSpadProfileIfThere|)
-  #+(or :GCL :CCL)
-  (|spad|)
-  #-(or :GCL :CCL)
   (handler-bind ((error #'spad-system-error-handler))
      (|spad|))
 )
@@ -1021,6 +1018,7 @@
                           (rpages 1000)
                           (hole 2000) )
   ;; initialize AKCL memory allocation parameters
+  #|
   #+:AKCL
   (progn
     (system:allocate 'cons cons)
@@ -1034,6 +1032,7 @@
     (system:allocate-relocatable-pages rpages)
     (system:set-hole-size hole))
   #-:AKCL
+  |#
   nil)
 
 @
Index: src/interp/nruncomp.boot.pamphlet
===================================================================
--- src/interp/nruncomp.boot.pamphlet   (wersja 636)
+++ src/interp/nruncomp.boot.pamphlet   (kopia robocza)
@@ -224,7 +224,7 @@
   NULL x => x
   x = $NRTaddForm => 5
   k := or/[i for i in 1.. for y in $NRTdeltaList
-            | y.0 = 'domain and y.1 = x and ($found := y)] =>
+            | CAR(y) = 'domain and NTH(1, y) = x and ($found := y)] =>
     $NRTbase + $NRTdeltaLength - k
   nil
 
Index: src/lisp/axiom-lisp.lisp.pamphlet
===================================================================
--- src/lisp/axiom-lisp.lisp.pamphlet   (wersja 636)
+++ src/lisp/axiom-lisp.lisp.pamphlet   (kopia robocza)
@@ -19,8 +19,8 @@
      :use (list (or (find-package "COMMON-LISP")
                     "LISP"))))) 
 
-
 (in-package "AXIOM-LISP")
+;;; (shadow 'elt)
 (do-symbols (x "AXIOM-LISP") (export (list x)))
 
 (export '(quit chdir |getEnv| |load_quietly| get-current-directory
@@ -31,11 +31,17 @@
 (progn
     (import '(LISP::LAMBDA-CLOSURE))
     (export '(LISP::LAMBDA-CLOSURE))
+    (setq si::*disable-recompile* t)
 )
 @
 
 <<*>>=
 (in-package "AXIOM-LISP")
+#|(defun elt(x n)
+    (if (consp x)
+         (nth n x)
+        (COMMON-LISP::elt x n)))
+|#
 #+:sbcl
 (progn
      (defvar *saved-terminal-io* *terminal-io*)
@@ -271,8 +277,15 @@
            ;;; gcl-2.6.7
            (probe-file file))
 |#
-#+:GCL (if (not (equal (file-kind (namestring file)) -1))
-           (truename file))
+#+:GCL (let* ((fk (file-kind (namestring file)))
+              (fname (trim-directory-name (namestring file)))
+             (dname (pad-directory-name fname)))
+           (cond
+             ((equal fk 1)
+                (truename dname))
+             ((equal fk 0)
+               (truename fname))
+             (t nil)))
 #+:sbcl (if (sb-unix::unix-file-kind file) (truename file))
 #+:openmcl (probe-file file)
 #+:clisp(let* ((fname (trim-directory-name (namestring file)))
Index: src/lisp/Makefile.in
===================================================================
--- src/lisp/Makefile.in        (wersja 636)
+++ src/lisp/Makefile.in        (kopia robocza)
@@ -36,16 +36,19 @@
        echo '(load "axiom-package.lisp")' \
             '(setq compiler::*default-system-p* t)' \
             '(compile-file "axiom-lisp.lisp")' | $(AXIOM_LISP)
-       echo '(compiler::link (quote ("axiom-package.lisp" 
"axiom-lisp.$(OBJEXT)")) "lisp" ' \
+       echo '(compiler::link nil "prelisp" ' \
               ' (format nil "(progn (let ((*load-path* (cons ~S *load-path*))'\
                                         ' (si::*load-types* ~S))' \
                                        ' (compiler::emit-fn t))' \
                                   ' (when (fboundp (quote si::sgc-on))' \
-                                        ' (si::sgc-on t))' \
+                                        ' (si::sgc-on nil))' \
                                   ' (setq compiler::*default-system-p* t))"' \
                       ' si::*system-directory* (quote (list ".lsp")))' \
                '  "$(lisp_c_objects) @axiom_c_runtime_extra@")' \
             | $(AXIOM_LISP)
+       echo '(setq si::*disable-recompile* t) (load "axiom-package.lisp") 
(load "axiom-lisp.$(OBJEXT)")' \
+            '(in-package "AXIOM-LISP") (save-core "lisp$(EXEEXT)")' \
+           | ./prelisp$(EXEEXT)
        $(INSTALL_PROGRAM) lisp$(EXEEXT) $(OUT)
        $(STAMP) $@
 
Index: src/lisp/Makefile.pamphlet
===================================================================
--- src/lisp/Makefile.pamphlet  (wersja 636)
+++ src/lisp/Makefile.pamphlet  (kopia robocza)
@@ -81,16 +81,19 @@
        echo '(load "axiom-package.lisp")' \
             '(setq compiler::*default-system-p* t)' \
             '(compile-file "axiom-lisp.lisp")' | $(AXIOM_LISP)
-       echo '(compiler::link (quote ("axiom-package.lisp" 
"axiom-lisp.$(OBJEXT)")) "lisp" ' \
+       echo '(compiler::link nil "prelisp" ' \
               ' (format nil "(progn (let ((*load-path* (cons ~S *load-path*))'\
                                         ' (si::*load-types* ~S))' \
                                        ' (compiler::emit-fn t))' \
                                   ' (when (fboundp (quote si::sgc-on))' \
-                                        ' (si::sgc-on t))' \
+                                        ' (si::sgc-on nil))' \
                                   ' (setq compiler::*default-system-p* t))"' \
                       ' si::*system-directory* (quote (list ".lsp")))' \
                '  "$(lisp_c_objects) @axiom_c_runtime_extra@")' \
             | $(AXIOM_LISP)
+       echo '(setq si::*disable-recompile* t) (load "axiom-package.lisp") 
(load "axiom-lisp.$(OBJEXT)")' \
+            '(in-package "AXIOM-LISP") (save-core "lisp$(EXEEXT)")' \
+           | ./prelisp$(EXEEXT)
        $(INSTALL_PROGRAM) lisp$(EXEEXT) $(OUT)
        $(STAMP) $@
 
_______________________________________________
Axiom-developer mailing list
Axiom-developer@nongnu.org
http://lists.nongnu.org/mailman/listinfo/axiom-developer

Reply via email to