Looks like the problem occurs in C_rereclaim: On my box at work, it doesn't fail: peter@chewbacca% LD_LIBRARY_PATH=.. ../csi -n -include-path .. -s -:g -:hi120K lolevel-tests.scm [GC] (old) fromspace: start=0x000000000070e7c0, limit=0x000000000071d7c0 [GC] (old) tospace: start=0x000000000071d7d0, limit=0x000000000072c7d0 [GC] resized heap to 2220032 bytes [GC] (new) fromspace: start=0x00007f19f9657010, limit=0x00007f19f9766010 [GC] (new) tospace: start=0x00007f19f8581010, limit=0x00007f19f8690010 reclaim p[1] = 0x7fff19b28d70, p[0] = 0x7f19f96b1f28 reclaim p[1] = 0x7fff19b122b0, p[0] = 0x7fff19b80e60 [GC] level 1 gcs(minor) 24 gcs(major) 1 [GC] stack 0x00007fff19a84f20 0x0000000019b0fd00 0x00007fff19b84f20 [GC] from 0x00007f19f8581010 0x00007f19f85cb418 0x00007f19f8690010 0x000000000004a408 [GC] to 0x00007f19f9657010 0x00007f19f9657010 0x00007f19f9766010 [GC] 0 locatives (from 32) reclaim p[1] = 0x7fff19af3080, p[0] = 0x7f19f85afa08 [GC] level 1 gcs(minor) 1 gcs(major) 2 [GC] stack 0x00007fff19a84f20 0x0000000019af08f0 0x00007fff19b84f20 [GC] from 0x00007f19f9657010 0x00007f19f96a1888 0x00007f19f9766010 0x000000000004a878 [GC] to 0x00007f19f8581010 0x00007f19f8581010 0x00007f19f8690010 [GC] 0 locatives (from 32) [GC] level 1 gcs(minor) 4 gcs(major) 3 [GC] stack 0x00007fff19a84f20 0x0000000019a9c5f0 0x00007fff19b84f20 [GC] from 0x00007f19f8581010 0x00007f19f85cbe28 0x00007f19f8690010 0x000000000004ae18 [GC] to 0x00007f19f9657010 0x00007f19f9657010 0x00007f19f9766010 [GC] 0 locatives (from 32) Until you force a reallocation by tweaking the heap size: peter@chewbacca% LD_LIBRARY_PATH=.. ../csi -n -include-path .. -s -:g -:hi420K lolevel-tests.scm [GC] (old) fromspace: start=0x00007fad210b0010, limit=0x00007fad210e4810 [GC] (old) tospace: start=0x00007fad2107b010, limit=0x00007fad210af810 [GC] resized heap to 2527232 bytes [GC] (new) fromspace: start=0x00007fad20f46010, limit=0x00007fad2107a810 [GC] (new) tospace: start=0x00007fad1feda010, limit=0x00007fad2000e810 reclaim p[1] = 0x7fff45818500, p[0] = 0x7fad20fa0ec0 reclaim p[1] = 0x7fff45801a40, p[0] = 0x7fff458705f0 [GC] (old) fromspace: start=0x00007fad20f46010, limit=0x00007fad2107a810 [GC] (old) tospace: start=0x00007fad1feda010, limit=0x00007fad2000e810 RERECLAIM p[1] = 0x7fad1feda010, p[0] = 0x7fad20fa0ec0 RERECLAIM p[1] = 0x7fad1feda028, p[0] = 0x7fff458705f0 [GC] resized heap to 1263616 bytes [GC] (new) fromspace: start=0x00007fad1fc3c010, limit=0x00007fad1fcd6410 [GC] (new) tospace: start=0x0000000000754f90, limit=0x00000000007ef390 [GC] level 1 gcs(minor) 24 gcs(major) 1 [GC] stack 0x00007fff457746b0 0x00000000457ff490 0x00007fff458746b0 [GC] from 0x00007fad1fc3c010 0x00007fad1fc86418 0x00007fad1fcd6410 0x000000000004a408 [GC] to 0x0000000000754f90 0x0000000000754f90 0x00000000007ef390 [GC] 0 locatives (from 32) reclaim p[1] = 0x7fff457e2810, p[0] = 0x7fad1fc6aa08 [GC] level 1 gcs(minor) 1 gcs(major) 2 [GC] stack 0x00007fff457746b0 0x00000000457e0080 0x00007fff458746b0 [GC] from 0x0000000000754f90 0x00000000007a00f0 0x00000000007ef390 0x000000000004b160 [GC] to 0x00007fad1fc3c010 0x00007fad1fc3c010 0x00007fad1fcd6410 [GC] 0 locatives (from 32) Error: unbound variable: foo Call history: # # (##core#quote #) # (mutate-procedure! # (lambda (#) (lambda # (assert (not (eq? foo new-foo))) (##core#let ((tmp139 (not (eq? foo new-foo)))) (##core#if (##core#check tmp139) tmp139 (##sys#error ... (##core#begin (##core#if (##core#check tmp139) tmp139 (##sys#error "assertion failed" (##core#quote ... (##core#if (##core#check tmp139) tmp139 (##sys#error "assertion failed" (##core#quote (not (eq? foo ...... (##core#check tmp139) (##sys#error "assertion failed" (##core#quote (not (eq? foo new-foo)))) (##core#quote (not (eq? foo new-foo))) (not (eq? foo new-foo)) (eq? foo new-foo) (not (eq? foo new-foo)) (eq? foo new-foo) <--