From 147f24abbb9c39704ebb9e93d8d1ec381b8ff53a Mon Sep 17 00:00:00 2001 From: Christophe Rhodes Date: Tue, 17 Feb 2004 17:59:38 +0000 Subject: [PATCH] 0.8.7.54: 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 | 6 ------ NEWS | 4 ++++ src/runtime/ppc-arch.c | 2 ++ version.lisp-expr | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/BUGS b/BUGS index bcdc886..365e537 100644 --- 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 --- 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) diff --git a/src/runtime/ppc-arch.c b/src/runtime/ppc-arch.c index 9c20cc0..f62739e 100644 --- a/src/runtime/ppc-arch.c +++ b/src/runtime/ppc-arch.c @@ -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); diff --git a/version.lisp-expr b/version.lisp-expr index 3c8b81a..29e7c66 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -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" -- 1.7.10.4