From: Christophe Rhodes Date: Wed, 14 Jan 2004 11:07:38 +0000 (+0000) Subject: 0.8.7.14: X-Git-Url: http://repo.macrolet.net/gitweb/?a=commitdiff_plain;h=af1ca7ec5eb13312e1ad0bfcca8a02329339f8e6;p=sbcl.git 0.8.7.14: Bandage to gencgc: it's not good, but at least it works, kind of ... restore gc_alloc_generation == 0 test in gc_find_freeish_pages ... add a simple test case to try to prevent this happening again --- diff --git a/src/runtime/gencgc.c b/src/runtime/gencgc.c index c018418..e350702 100644 --- a/src/runtime/gencgc.c +++ b/src/runtime/gencgc.c @@ -966,6 +966,16 @@ gc_find_freeish_pages(int *restart_page_ptr, int nbytes, int unboxed) (unboxed ? UNBOXED_PAGE : BOXED_PAGE)) && (page_table[first_page].large_object == 0) && (page_table[first_page].gen == gc_alloc_generation) && + /* FIXME: Why? Please tell me why? Removal of + this test, which restricts opening an allocation + region on a partially-used page to the nursery + generation, causes more or less instant heap + corruption on forms such as + (loop repeat 2 + do (compile nil '(lambda (x) x)) + do (gc :full t)) + -- CSR, 2003-01-14 */ + (gc_alloc_generation == 0) && (page_table[first_page].bytes_used < (PAGE_BYTES-32)) && (page_table[first_page].write_protected == 0) && (page_table[first_page].dont_move == 0)) { diff --git a/tests/interface.pure.lisp b/tests/interface.pure.lisp index 5ac83e0..cc83e6a 100644 --- a/tests/interface.pure.lisp +++ b/tests/interface.pure.lisp @@ -132,3 +132,9 @@ ;;; DISASSEMBLE shouldn't fail on purified functions (disassemble 'cl:+) (disassemble 'sb-ext:run-program) + +;;; minimal test of GC: see stress-gc.{sh,lisp} for a more +;;; comprehensive test. +(loop repeat 2 + do (compile nil '(lambda (x) x)) + do (sb-ext:gc :full t)) diff --git a/version.lisp-expr b/version.lisp-expr index 669512e..2dfd7dc 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.13" +"0.8.7.14"