X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Fdebug.impure.lisp;h=3204f72b62849ef825a1e06bdc702a1b797d98d7;hb=cff4add8f008056edf4c876260c6be8ba804b24c;hp=7a2d9135a16ca4230479d7f3590cbcfaf9fe3478;hpb=d63d80e637e9058ff5db7a10c267796ff7970ba1;p=sbcl.git diff --git a/tests/debug.impure.lisp b/tests/debug.impure.lisp index 7a2d913..3204f72 100644 --- a/tests/debug.impure.lisp +++ b/tests/debug.impure.lisp @@ -151,7 +151,7 @@ (with-test (:name (:undefined-function :bug-346) :fails-on '(or :alpha :ppc :sparc :mips - (and :x86-64 (or :freebsd :darwin)))) + (and :x86-64 :freebsd))) (assert (verify-backtrace (lambda () (test #'optimized)) (list *undefined-function-frame* @@ -165,7 +165,7 @@ ;; the presence of the IR1 stepper instrumentation (and ;; is thus again failing now that the instrumentation is ;; no more). - :fails-on '(or :x86 :x86-64 :alpha :mips)) + :fails-on '(or :alpha :mips :ppc)) (assert (verify-backtrace (lambda () (test #'not-optimized)) (list *undefined-function-frame* @@ -194,12 +194,12 @@ (declare (optimize (speed 1) (debug 2))) ; no tail call elimination (funcall fun))) (with-test (:name (:divide-by-zero :bug-346) - :fails-on '(or :alpha (and :x86-64 :darwin))) ; bug 346 + :fails-on :alpha) ; bug 346 (assert (verify-backtrace (lambda () (test #'optimized)) (list '(/ 42 &rest) (list '(flet test) #'optimized))))) (with-test (:name (:divide-by-zero :bug-356) - :fails-on '(or :alpha (and :x86-64 :darwin))) ; bug 356 + :fails-on :alpha) ; bug 356 (assert (verify-backtrace (lambda () (test #'not-optimized)) (list '(/ 42 &rest) '((flet not-optimized)) @@ -207,13 +207,6 @@ (with-test (:name (:throw :no-such-tag) :fails-on '(or - (and :x86 :openbsd) - (and :x86 :sunos) - (and :x86 :darwin) - (and :x86 :linux) - (and :x86-64 :darwin) - (and :x86-64 :linux) - (and :x86-64 :openbsd) (and :sparc :linux) :alpha :mips)) @@ -273,7 +266,7 @@ ;;; FIXME: This test really should be broken into smaller pieces (with-test (:name (:backtrace :misc) - :fails-on '(or (and :x86 (or :sunos)) (and :x86-64 :darwin))) + :fails-on '(and :x86 (or :sunos))) (write-line "//tl-xep") (with-details t (assert (verify-backtrace #'namestring @@ -373,6 +366,53 @@ '(((lambda (x)) 13) ((lambda (y)) 13)))) +(with-test (:name :clos-slot-typecheckfun-named) + (assert + (verify-backtrace + (lambda () + (eval `(locally (declare (optimize safety)) + (defclass clos-typecheck-test () + ((slot :type fixnum))) + (setf (slot-value (make-instance 'clos-typecheck-test) 'slot) t)))) + '(((sb-pcl::slot-typecheck clos-typecheck-test slot) t))))) + +(with-test (:name :clos-emf-named) + (assert + (verify-backtrace + (lambda () + (eval `(progn + (defmethod clos-emf-named-test ((x symbol)) x) + (defmethod clos-emf-named-test :before (x) (assert x)) + (clos-emf-named-test nil)))) + '(((sb-pcl::emf clos-emf-named-test) ? ? nil))))) + +(with-test (:name :bug-310173) + (flet ((make-fun (n) + (let* ((names '(a b)) + (req (loop repeat n collect (pop names)))) + (compile nil + `(lambda (,@req &rest rest) + (let ((* *)) ; no tail-call + (apply '/ ,@req rest))))))) + (assert + (verify-backtrace (lambda () + (funcall (make-fun 0) 10 11 0)) + '((sb-kernel:two-arg-/ 10/11 0) + (/ 10 11 0) + ((lambda (&rest rest)) 10 11 0)))) + (assert + (verify-backtrace (lambda () + (funcall (make-fun 1) 10 11 0)) + '((sb-kernel:two-arg-/ 10/11 0) + (/ 10 11 0) + ((lambda (a &rest rest)) 10 11 0)))) + (assert + (verify-backtrace (lambda () + (funcall (make-fun 2) 10 11 0)) + '((sb-kernel:two-arg-/ 10/11 0) + (/ 10 11 0) + ((lambda (a b &rest rest)) 10 11 0)))))) + ;;;; test TRACE (defun trace-this () @@ -394,9 +434,9 @@ ;;; This is not a WITH-TEST :FAILS-ON PPC DARWIN since there are ;;; suspicions that the breakpoint trace might corrupt the whole image ;;; on that platform. -#-(and (or ppc x86 x86-64) darwin) +#-(and (or ppc x86 x86-64) (or darwin sunos)) (with-test (:name (trace :encapsulate nil) - :fails-on '(or :ppc :sparc :mips)) + :fails-on '(or (and :ppc (not :linux)) :sparc :mips)) (let ((out (with-output-to-string (*trace-output*) (trace trace-this :encapsulate nil) (assert (eq 'ok (trace-this))) @@ -406,7 +446,7 @@ #-(and (or ppc x86 x86-64) darwin) (with-test (:name (trace-recursive :encapsulate nil) - :fails-on '(or :ppc :sparc :mips)) + :fails-on '(or (and :ppc (not :linux)) :sparc :mips)) (let ((out (with-output-to-string (*trace-output*) (trace trace-fact :encapsulate nil) (assert (= 120 (trace-fact 5))) @@ -415,11 +455,34 @@ (assert (search "returned 1" out)) (assert (search "returned 120" out)))) +(defun trace-and-fmakunbound-this (x) + x) + +(with-test (:name :bug-667657) + (trace trace-and-fmakunbound-this) + (fmakunbound 'trace-and-fmakunbound-this) + (untrace) + (assert (not (trace)))) + (with-test (:name :bug-414) (handler-bind ((warning #'error)) (load (compile-file "bug-414.lisp")) (disassemble 'bug-414))) +(with-test (:name :bug-310175) + (let ((dx-arg (cons t t))) + (declare (dynamic-extent dx-arg)) + (flet ((dx-arg-backtrace (x) + (declare (optimize (debug 2))) + (prog1 (sb-debug:backtrace-as-list 10) + (assert (sb-debug::stack-allocated-p x))))) + (declare (notinline dx-arg-backtrace)) + (assert (member-if (lambda (frame) + (and (consp frame) + (equal '(flet dx-arg-backtrace) (car frame)) + (notany #'sb-debug::stack-allocated-p (cdr frame)))) + (dx-arg-backtrace dx-arg)))))) + ;;;; test infinite error protection (defmacro nest-errors (n-levels error-form)