diff --git a/tests/bug-936304.impure.lisp b/tests/bug-936304.impure.lisp new file mode 100644 index 000000000..173e15f09 --- /dev/null +++ b/tests/bug-936304.impure.lisp @@ -0,0 +1,23 @@ +(defun stress-gc () + ;; Kludge or not? I don't know whether the smaller allocation size + ;; for sb-safepoint is a legitimate correction to the test case, or + ;; rather hides the actual bug this test is checking for... It's also + ;; not clear to me whether the issue is actually safepoint-specific. + ;; But the main problem safepoint-related bugs tend to introduce is a + ;; delay in the GC triggering -- and if bug-936304 fails, it also + ;; causes bug-981106 to fail, even though there is a full GC in + ;; between, which makes it seem unlikely to me that the problem is + ;; delay- (and hence safepoint-) related. --DFL + (let* ((x (make-array (truncate #-sb-safepoint (* 0.2 (dynamic-space-size)) + #+sb-safepoint (* 0.1 (dynamic-space-size)) + sb-vm:n-word-bytes)))) + (elt x 0))) + +(with-test (:name :bug-936304) + (gc :full t) + (assert (eq :ok (handler-case + (progn + (loop repeat 50 do (stress-gc)) + :ok) + (storage-condition () + :oom))))) diff --git a/tests/bug-981106.impure.lisp b/tests/bug-981106.impure.lisp new file mode 100644 index 000000000..5b01fc147 --- /dev/null +++ b/tests/bug-981106.impure.lisp @@ -0,0 +1,13 @@ +(with-test (:name :bug-981106) + (gc :full t) + (assert (eq :ok + (handler-case + (dotimes (runs 100 :ok) + (let* ((n (truncate (dynamic-space-size) 1200)) + (len (length + (with-output-to-string (string) + (dotimes (i n) + (write-sequence "hi there!" string)))))) + (assert (eql len (* n (length "hi there!")))))) + (storage-condition () + :oom))))) diff --git a/tests/gc.impure.lisp b/tests/gc.impure.lisp index 39873c5bd..7405b6c09 100644 --- a/tests/gc.impure.lisp +++ b/tests/gc.impure.lisp @@ -175,44 +175,6 @@ (assert (= (sb-ext:generation-minimum-age-before-gc i) 0.75)) (assert (= (sb-ext:generation-number-of-gcs-before-promotion i) 1)))) -(defun stress-gc () - ;; Kludge or not? I don't know whether the smaller allocation size - ;; for sb-safepoint is a legitimate correction to the test case, or - ;; rather hides the actual bug this test is checking for... It's also - ;; not clear to me whether the issue is actually safepoint-specific. - ;; But the main problem safepoint-related bugs tend to introduce is a - ;; delay in the GC triggering -- and if bug-936304 fails, it also - ;; causes bug-981106 to fail, even though there is a full GC in - ;; between, which makes it seem unlikely to me that the problem is - ;; delay- (and hence safepoint-) related. --DFL - (let* ((x (make-array (truncate #-sb-safepoint (* 0.2 (dynamic-space-size)) - #+sb-safepoint (* 0.1 (dynamic-space-size)) - sb-vm:n-word-bytes)))) - (elt x 0))) - -(with-test (:name :bug-936304) - (gc :full t) - (assert (eq :ok (handler-case - (progn - (loop repeat 50 do (stress-gc)) - :ok) - (storage-condition () - :oom))))) - -(with-test (:name :bug-981106) - (gc :full t) - (assert (eq :ok - (handler-case - (dotimes (runs 100 :ok) - (let* ((n (truncate (dynamic-space-size) 1200)) - (len (length - (with-output-to-string (string) - (dotimes (i n) - (write-sequence "hi there!" string)))))) - (assert (eql len (* n (length "hi there!")))))) - (storage-condition () - :oom))))) - (with-test (:name :gc-logfile :skipped-on (not :gencgc)) (assert (not (gc-logfile))) (let ((p (scratch-file-name "log")))