X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Fdebug.impure.lisp;h=29e0d11999b82e1f52e9f5d86da1419c3ea996d6;hb=751e08955647b28ba9d6b4693d599bcc9fda31ab;hp=b79e3f38d70ed368e77f4e6e88bdbf35ed6cb235;hpb=d84b1f2bb797f2e9d1d727e8424d01abe718a47c;p=sbcl.git diff --git a/tests/debug.impure.lisp b/tests/debug.impure.lisp index b79e3f3..29e0d11 100644 --- a/tests/debug.impure.lisp +++ b/tests/debug.impure.lisp @@ -265,17 +265,17 @@ (assert (verify-backtrace (lambda () (bug-354 354)) '((bug-354 354))))) ;;; FIXME: This test really should be broken into smaller pieces -(with-test (:name (:backtrace :misc) - :fails-on '(and :x86 (or :sunos))) - (write-line "//tl-xep") +(with-test (:name (:backtrace :tl-xep) + :fails-on '(and :x86 (or :sunos))) (with-details t (assert (verify-backtrace #'namestring '(((sb-c::tl-xep namestring) 0 ?))))) (with-details nil (assert (verify-backtrace #'namestring - '((namestring))))) + '((namestring)))))) - ;; &MORE-PROCESSOR +(with-test (:name (:backtrace :more-processor) + :fails-on '(and :x86 (or :sunos))) (with-details t (assert (verify-backtrace (lambda () (bt.1.1 :key)) '(((sb-c::&more-processor bt.1.1) &rest)))) @@ -289,10 +289,10 @@ (assert (verify-backtrace (lambda () (bt.1.2 :key)) '((bt.1.2 &rest)))) (assert (verify-backtrace (lambda () (bt.1.3 :key)) - '((bt.1.3 &rest))))) + '((bt.1.3 &rest)))))) - ;; XEP - (write-line "//xep") +(with-test (:name (:backtrace :xep) + :fails-on '(and :x86 (or :sunos))) (with-details t (assert (verify-backtrace #'bt.2.1 '(((sb-c::xep bt.2.1) 0 ?)))) @@ -306,10 +306,10 @@ (assert (verify-backtrace #'bt.2.2 '((bt.2.2 &rest)))) (assert (verify-backtrace #'bt.2.3 - '((bt.2.3 &rest))))) + '((bt.2.3 &rest)))))) - ;; VARARGS-ENTRY - (write-line "//varargs-entry") +(with-test (:name (:backtrace :varargs-entry) + :fails-on '(and :x86 (or :sunos))) (with-details t (assert (verify-backtrace #'bt.3.1 '(((sb-c::varargs-entry bt.3.1) :key nil)))) @@ -323,10 +323,10 @@ (assert (verify-backtrace #'bt.3.2 '((bt.3.2 :key ?)))) (assert (verify-backtrace #'bt.3.3 - '((bt.3.3 &rest))))) + '((bt.3.3 &rest)))))) - ;; HAIRY-ARG-PROCESSOR - (write-line "//hairy-args-processor") +(with-test (:name (:backtrace :hairy-args-processor) + :fails-on '(and :x86 (or :sunos))) (with-details t (assert (verify-backtrace #'bt.4.1 '(((sb-c::hairy-arg-processor bt.4.1) ?)))) @@ -340,10 +340,11 @@ (assert (verify-backtrace #'bt.4.2 '((bt.4.2 ?)))) (assert (verify-backtrace #'bt.4.3 - '((bt.4.3 &rest))))) + '((bt.4.3 &rest)))))) - ;; &OPTIONAL-PROCESSOR - (write-line "//optional-processor") + +(with-test (:name (:backtrace :optional-processor) + :fails-on '(and :x86 (or :sunos))) (with-details t (assert (verify-backtrace #'bt.5.1 '(((sb-c::&optional-processor bt.5.1))))) @@ -386,6 +387,33 @@ (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 () @@ -407,7 +435,7 @@ ;;; 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 (and :ppc (not :linux)) :sparc :mips)) (let ((out (with-output-to-string (*trace-output*) @@ -428,11 +456,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)