0.8.7.54:
authorChristophe Rhodes <csr21@cam.ac.uk>
Tue, 17 Feb 2004 17:59:38 +0000 (17:59 +0000)
committerChristophe Rhodes <csr21@cam.ac.uk>
Tue, 17 Feb 2004 17:59:38 +0000 (17:59 +0000)
Fix unbelievably long-standing RUN-PROGRAM bug (190) once
and for all
... sigtrap_handler() in ppc-arch.c was just completely wrong; it
handled the SIGTRAP multiple times.  Oh well :-)

BUGS
NEWS
src/runtime/ppc-arch.c
version.lisp-expr

diff --git a/BUGS b/BUGS
index bcdc886..365e537 100644 (file)
--- a/BUGS
+++ b/BUGS
@@ -616,12 +616,6 @@ WORKAROUND:
   The careful type of X is {2k} :-(. Is it really important to be
   able to work with unions of many intervals?
 
-190: "PPC/Linux pipe? buffer? bug"
-  In sbcl-0.7.6, the run-program.test.sh test script sometimes hangs
-  on the PPC/Linux platform, waiting for a zombie env process.  This
-  is a classic symptom of buffer filling and deadlock, but it seems
-  only sporadically reproducible.
-
 191: "Miscellaneous PCL deficiencies"
   (reported by Alexey Dejneka sbcl-devel 2002-08-04)
   a. DEFCLASS does not inform the compiler about generated
diff --git a/NEWS b/NEWS
index eb0ab0d..860270f 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -2246,6 +2246,10 @@ changes in sbcl-0.8.8 relative to sbcl-0.8.7:
     As a consequence of this change, the :IF-EXISTS :NEW-VERSION
     option to OPEN now signals an error if the file being opened
     exists; this may have an impact on existing code.
+  * fixed bug 190: RUN-PROGRAM should now work properly, respecting
+    signals received, on the PowerPC platforms (both Linux and
+    Darwin).  (thanks to Pierre Mai for pointing out the location of
+    the error)
   * bug fix: DECODE-UNIVERSAL-TIME now accepts timezone arguments with
     second-resolution: integer multiples of 1/3600 between -24 and 24.
     (thanks to Vincent Arkesteijn)
index 9c20cc0..f62739e 100644 (file)
@@ -185,9 +185,11 @@ sigtrap_handler(int signal, siginfo_t *siginfo, os_context_t *context)
            interrupt_handle_now(signal, code, context);
            break;
        }
+       return;
     }
     if (((code >> 26) == 3) && (((code >> 21) & 31) == 24)) {
        interrupt_internal_error(signal, code, context, 0);
+       return;
     }
     
     interrupt_handle_now(signal, code, context);
index 3c8b81a..29e7c66 100644 (file)
@@ -17,4 +17,4 @@
 ;;; checkins which aren't released. (And occasionally for internal
 ;;; versions, especially for internal versions off the main CVS
 ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"0.8.7.53"
+"0.8.7.54"