Index: /trunk/ccl/lisp-kernel/pmcl-kernel.c
===================================================================
--- /trunk/ccl/lisp-kernel/pmcl-kernel.c	(revision 5542)
+++ /trunk/ccl/lisp-kernel/pmcl-kernel.c	(revision 5543)
@@ -854,5 +854,5 @@
   }
   fprintf(stderr, "Fatal error: %s\n%s\n", param0, param1);
-  exit(-1);
+  _exit(-1);
 }
 
@@ -1183,5 +1183,5 @@
 {
   kill(main_thread_pid, SIGKILL);
-  exit(-1);
+  _exit(-1);
 }
 
@@ -1327,4 +1327,20 @@
 }
 #endif
+
+void
+lazarus()
+{
+  TCR *tcr = get_tcr(false);
+  if (tcr) {
+    tcr->vs_area->active = tcr->vs_area->high - node_size;
+    tcr->save_vsp = (LispObj *)(tcr->vs_area->active);
+    tcr->ts_area->active = tcr->ts_area->high;
+    tcr->save_tsp = (LispObj *)(tcr->ts_area->active);
+    tcr->catch_top = 0;
+    tcr->db_link = 0;
+    tcr->xframe = 0;
+    start_lisp(tcr, 0);
+  }
+}
   
 main(int argc, char *argv[], char *envp[], void *aux)
@@ -1526,6 +1542,7 @@
   egc_control(true, NULL);
 #endif
+  atexit(lazarus);
   start_lisp(TCR_TO_TSD(tcr), 0);
-  exit(0);
+  _exit(0);
 }
 
