0.8.7.14:
authorChristophe Rhodes <csr21@cam.ac.uk>
Wed, 14 Jan 2004 11:07:38 +0000 (11:07 +0000)
committerChristophe Rhodes <csr21@cam.ac.uk>
Wed, 14 Jan 2004 11:07:38 +0000 (11:07 +0000)
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

src/runtime/gencgc.c
tests/interface.pure.lisp
version.lisp-expr

index c018418..e350702 100644 (file)
@@ -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)) {
index 5ac83e0..cc83e6a 100644 (file)
 ;;; 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))
index 669512e..2dfd7dc 100644 (file)
@@ -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"