1.0.11.19: hard failure for corrupted fixups vectors
authorNikodemus Siivola <nikodemus@random-state.net>
Fri, 9 Nov 2007 14:57:01 +0000 (14:57 +0000)
committerNikodemus Siivola <nikodemus@random-state.net>
Fri, 9 Nov 2007 14:57:01 +0000 (14:57 +0000)
* Prior to this SBCL used to only print an error message to stderr of
  the process, but since bogus fixups should only occur if something
  is badly wrong we prefer to lose().

src/runtime/gencgc.c
version.lisp-expr

index 250ccee..719e127 100644 (file)
@@ -1817,7 +1817,9 @@ gencgc_apply_code_fixups(struct code *old_code, struct code *new_code)
                     old_value - displacement;
         }
     } else {
-        fprintf(stderr, "widetag of fixup vector is %d\n", widetag_of(fixups_vector->header));
+        /* This used to just print a note to stderr, but a bogus fixup seems to
+         * indicate real heap corruption, so a hard hailure is in order. */
+        lose("fixup vector %p has a bad widetag: %d\n", fixups_vector, widetag_of(fixups_vector->header));
     }
 
     /* Check for possible errors. */
index 4387ce8..22cfe31 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".)
-"1.0.11.18"
+"1.0.11.19"