diff -ruN klic-3.003-2002-02-22e/include/klic/control.h klic-3.003-2002-02-24/include/klic/control.h
--- klic-3.003-2002-02-22e/include/klic/control.h	Sun Feb 17 15:11:27 2002
+++ klic-3.003-2002-02-24/include/klic/control.h	Sun Feb 24 13:08:08 2002
@@ -8,6 +8,7 @@
 #ifndef _KLIC_CONTROL_H_
 #define _KLIC_CONTROL_H_
 
+#include <assert.h>
 #include <klic/alloc.h>  /* klic_interrupt */
 
 /* runtime/faisus.c */
@@ -36,7 +37,7 @@
  */
 
 #define _ENQUEUE_AT_PRIORITY(p, q0, q, is_rel) \
-  (set_heapp(allocp), \
+  (assert(allocp==heapp()), \
     (qp = enqueue_after_waiting((struct goalrec*) (q0), \
       (p), (struct goalrec*) (q), (is_rel)) ))
 
@@ -45,10 +46,10 @@
     (long) (prio), (struct goalrec*) (q), glbl))
 
 #define enqueue_at_priority(p, q0, q)			\
-do{ _ENQUEUE_AT_PRIORITY(p, q0, q, 0); }while(0)
+do{ assert(allocp==heapp()); _ENQUEUE_AT_PRIORITY(p, q0, q, 0); }while(0)
 
 #define enqueue_at_lower_priority(p, q0, q)		\
-do{ _ENQUEUE_AT_PRIORITY(p, q0, q, 1); }while(0)
+do{ assert(allocp==heapp()); _ENQUEUE_AT_PRIORITY(p, q0, q, 1); }while(0)
 
 #define enqueue_at_priority_no_check(x, q0, q)		\
 do{							\
diff -ruN klic-3.003-2002-02-22e/include/klic/gc_macro.h klic-3.003-2002-02-24/include/klic/gc_macro.h
--- klic-3.003-2002-02-22e/include/klic/gc_macro.h	Fri Feb 22 11:27:31 2002
+++ klic-3.003-2002-02-24/include/klic/gc_macro.h	Sun Feb 24 13:16:21 2002
@@ -61,6 +61,7 @@
   q argv[2]; \
   method_result = GC_SUCCEEDED; \
   G_MAKE_VAR(newvar); \
+  assert(g_allocp >= heapp() + 1); \
   rest_of_stream = newvar; \
   argv[0] = GC_TERM; \
   argv[1] = newvar; \
diff -ruN klic-3.003-2002-02-22e/include/klic/gg_macro.h klic-3.003-2002-02-24/include/klic/gg_macro.h
--- klic-3.003-2002-02-22e/include/klic/gg_macro.h	Fri Feb 22 11:27:31 2002
+++ klic-3.003-2002-02-24/include/klic/gg_macro.h	Sun Feb 24 13:16:34 2002
@@ -48,6 +48,7 @@
   q newvar, tmp; \
   q argv[2]; \
   G_MAKE_VAR(newvar); \
+  assert(g_allocp >= heapp() + 1); \
   argv[0] = GG_TERM; \
   argv[1] = newvar; \
   tmp = GC_wakeup_g_new(2,argv,g_allocp); \
diff -ruN klic-3.003-2002-02-22e/runtime/ge_exref.c klic-3.003-2002-02-24/runtime/ge_exref.c
--- klic-3.003-2002-02-22e/runtime/ge_exref.c	Sat Feb 16 11:55:58 2002
+++ klic-3.003-2002-02-24/runtime/ge_exref.c	Sun Feb 24 13:20:17 2002
@@ -148,6 +148,7 @@
   newself->index = GG_SELF->index;
   newself->wec = GG_SELF->wec;
   G_COPY_KL1_TERM_TO_NEWGEN(GG_SELF->to_exref, newself->to_exref);
+  assert(g_allocp >= heapp());
 
   GG_SELF->gc_flag = IMPREC_COPIED;
   newself->gc_flag = IMPREC_NOT_COPIED;
diff -ruN klic-3.003-2002-02-22e/runtime/ge_readhook.c klic-3.003-2002-02-24/runtime/ge_readhook.c
--- klic-3.003-2002-02-22e/runtime/ge_readhook.c	Mon Jan 21 20:55:25 2002
+++ klic-3.003-2002-02-24/runtime/ge_readhook.c	Sun Feb 24 13:20:34 2002
@@ -77,6 +77,7 @@
   newself->return_index = GC_SELF->return_index;
 
   G_COPY_KL1_TERM_TO_NEWGEN(GC_SELF->to_read_hook, newself->to_read_hook);
+  assert(g_allocp >= heapp());
 
   GC_RETURN_FROM_GC(newself);
 }
diff -ruN klic-3.003-2002-02-22e/runtime/generic.c klic-3.003-2002-02-24/runtime/generic.c
--- klic-3.003-2002-02-22e/runtime/generic.c	Fri Feb 22 10:58:19 2002
+++ klic-3.003-2002-02-24/runtime/generic.c	Sun Feb 24 13:17:25 2002
@@ -82,6 +82,7 @@
   G_HEAPALLOC(*goalp1, G_SIZE_IN_Q(struct goalrec)-3, (struct goalrec*));
   assert(g_allocp >= heapp() + G_SIZE_IN_Q(struct goalrec)-3);
   G_MAKE_VAR(newvar);
+  assert(g_allocp >= heapp() + 1);
   (*goalp1)->pred    = G_NEW_GOAL;
   (*goalp1)->args[0] = newvar;
   (*goalp1)->args[1] = newobj;
diff -ruN klic-3.003-2002-02-22e/runtime/gio.c klic-3.003-2002-02-24/runtime/gio.c
--- klic-3.003-2002-02-22e/runtime/gio.c	Sat Feb 16 11:57:37 2002
+++ klic-3.003-2002-02-24/runtime/gio.c	Sun Feb 24 13:21:03 2002
@@ -396,6 +396,7 @@
 
  gc_request:
   G_MAKE_VAR(newvar);
+  assert(g_allocp >= heapp() + 1);
   GC_KL1_UNIFY(GC_TERM, newvar);
   GC_RETURN_WITH_HOOK(newvar);
 
@@ -412,11 +413,13 @@
   *newself = *GC_SELF;
   if( GC_SELF->stream != 0 ){
     G_COPY_KL1_TERM_TO_NEWGEN(GC_SELF->stream, newself->stream);
+    assert(g_allocp >= heapp());
   }else{
     newself->stream = 0;
   }
   G_COPY_KL1_TERM_TO_NEWGEN(GC_SELF->inname, newself->inname);
   G_COPY_KL1_TERM_TO_NEWGEN(GC_SELF->outname, newself->outname);
+  assert(g_allocp >= heapp());
   GC_RETURN_FROM_GC(newself);
 }
 
diff -ruN klic-3.003-2002-02-22e/runtime/gmerge.c klic-3.003-2002-02-24/runtime/gmerge.c
--- klic-3.003-2002-02-22e/runtime/gmerge.c	Fri Feb 22 10:59:11 2002
+++ klic-3.003-2002-02-24/runtime/gmerge.c	Sun Feb 24 13:21:14 2002
@@ -100,6 +100,7 @@
     gc_request2:
       GC_SELF->count -= size-i-1;
       G_MAKE_VAR(newvar);
+      assert(g_allocp >= heapp() + 1);
       GC_MAKE_MERGE_IN_GOAL(newvar,GC_TERM,i,size);
       GC_RETURN_WITH_HOOK(newvar);
     } else goto invalid_data;
@@ -110,6 +111,7 @@
   GC_FAIL("Invalid data unified with merger");
  gc_request:
   G_MAKE_VAR(newvar);
+  assert(g_allocp >= heapp() + 1);
   GC_KL1_UNIFY(GC_TERM,newvar);
   GC_RETURN_WITH_HOOK(newvar);
 }
@@ -122,6 +124,7 @@
   GCSET_NEWOBJ_IN_NEWGEN(newself);
   newself->count = GC_SELF->count;
   G_COPY_KL1_TERM_TO_NEWGEN(GC_SELF->outstream,newself->outstream);
+  assert(g_allocp >= heapp());
   GC_RETURN_FROM_GC(newself);
 }
 
diff -ruN klic-3.003-2002-02-22e/runtime/gtermarray.c klic-3.003-2002-02-24/runtime/gtermarray.c
--- klic-3.003-2002-02-22e/runtime/gtermarray.c	Fri Feb 22 11:02:24 2002
+++ klic-3.003-2002-02-24/runtime/gtermarray.c	Sun Feb 24 13:21:29 2002
@@ -45,6 +45,7 @@
   newself->nterm = size;
   for (i=0; i < size; i++) {
     G_COPY_KL1_TERM_TO_NEWGEN(GD_SELF->terms[i],newself->terms[i]);
+    assert(g_allocp >= heapp());
   }
   GD_RETURN_FROM_GC(newself);
 }
diff -ruN klic-3.003-2002-02-22e/runtime/wakeup.c klic-3.003-2002-02-24/runtime/wakeup.c
--- klic-3.003-2002-02-22e/runtime/wakeup.c	Mon Jan 21 20:55:25 2002
+++ klic-3.003-2002-02-24/runtime/wakeup.c	Sun Feb 24 13:21:43 2002
@@ -39,6 +39,7 @@
   GCSET_NEWOBJ_IN_NEWGEN(newself);
   G_COPY_KL1_TERM_TO_NEWGEN(GC_SELF->x,newself->x);
   G_COPY_KL1_TERM_TO_NEWGEN(GC_SELF->y,newself->y);
+  assert(g_allocp >= heapp());
   GC_RETURN_FROM_GC(newself);
 }
 
