diff --git a/bin/export.pike b/bin/export.pike
index 48d1da91e140032c7c492610e130d07006fadb2f..c71d1bfe41de802c124c9af3a15681ca3ef5902d 100755
--- a/bin/export.pike
+++ b/bin/export.pike
@@ -1,6 +1,6 @@
 #!/usr/local/bin/pike
 
-/* $Id: export.pike,v 1.17 1998/03/26 05:37:30 hubbe Exp $ */
+/* $Id: export.pike,v 1.18 1998/03/27 23:12:45 hubbe Exp $ */
 
 #include <simulate.h>
 
@@ -49,7 +49,7 @@ void fix_configure(string dir)
     if(!config || config_in[3] > config[3])
     {
       werror("Fixing configure in "+dir+".\n");
-      system("cd "+dir+" ; autoconf");
+      Process.create_process(({"autoconf"}),(["cwd":dir]))->wait();
     }
   }
 }
@@ -88,12 +88,17 @@ int main(int argc, string *argv)
   if(file_stat("pike/CVS"))
   {
     werror("Bumping release number.\n");
-    system("cd pike/src ; cvs update version.c");
+    Process.create_process(({"cvs","update","version.c"}),
+			   (["cwd":"pike/src"] ))->wait();
     string s=Stdio.read_file("pike/src/version.c");
     sscanf(s,"%s release %d%s",string pre, int rel, string post);
     rel++;
     Stdio.File("pike/src/version.c","wct")->write(pre+" release "+rel+post);
-    system("cvs commit -m 'release number bumped by export.pike' src/version.c");
+    Process.create_process(({"cvs","commit","-m",
+			       "release number bumped by export.pike",
+			       "version.c"}),
+			   (["cwd":"pike/src"]))->wait();
+
 
     vpath=replace(getversion()," ","-");
     string tag=replace(vpath,({"Pike-","."}),({"","_"}));
diff --git a/src/block_alloc.h b/src/block_alloc.h
index ba4792cfa98309fdbdbe1d9e63e501692becb1ab..0b38f66fdfce47b3bae10ca0305a295d7b28dbbd 100644
--- a/src/block_alloc.h
+++ b/src/block_alloc.h
@@ -1,3 +1,4 @@
+#define PRE_INIT_BLOCK(X)
 #define INIT_BLOCK(X)
 #define EXIT_BLOCK(X)
 #define BLOCK_ALLOC(DATA,BSIZE)									\
@@ -30,6 +31,7 @@ struct DATA *PIKE_CONCAT(alloc_,DATA)(void)							\
     for(e=0;e<BSIZE;e++)									\
     {												\
       n->x[e].next=PIKE_CONCAT3(free_,DATA,s);							\
+      PRE_INIT_BLOCK( (n->x+e) );								\
       PIKE_CONCAT3(free_,DATA,s)=n->x+e;							\
     }												\
   }												\
@@ -44,6 +46,7 @@ inline void PIKE_CONCAT(free_,DATA)(struct DATA *d)						\
 {												\
   EXIT_BLOCK(d);										\
   d->next=PIKE_CONCAT3(free_,DATA,s);								\
+  PRE_INIT_BLOCK(d);										\
   PIKE_CONCAT3(free_,DATA,s)=d;									\
 }												\
 												\
diff --git a/src/callback.c b/src/callback.c
index 4c05b76a462dd907e315eded97e6608e62c7130c..23a36d252466223cff6b97f884ad095e1e398a65 100644
--- a/src/callback.c
+++ b/src/callback.c
@@ -28,6 +28,10 @@ struct callback
 };
 
 #define CALLBACK_CHUNK 128
+#ifdef DEBUG
+#undef PRE_INIT_BLOCK
+#define PRE_INIT_BLOCK(X) X->free_func=(callback_func)remove_callback;
+#endif
 BLOCK_ALLOC(callback, CALLBACK_CHUNK)
 
 
@@ -207,9 +211,6 @@ void free_callback_list(struct callback_list *lst)
       l->free_func(l, l->arg, 0);
     *ptr=l->next;
     free_callback(l);
-#ifdef DEBUG
-    l->free_func=(callback_func)remove_callback;
-#endif
   }
 }
 
diff --git a/src/signal_handler.c b/src/signal_handler.c
index 4a93147a73de244875195ea4e1ef01b7b3aafd00..b395ba34d4f05e56372200b8573c5092a9a1fb1c 100644
--- a/src/signal_handler.c
+++ b/src/signal_handler.c
@@ -1116,7 +1116,7 @@ void f_create_process(INT32 args)
 	    /* Kluge for HP-(S)UX */
 	    if(initgroupgid>60000 &&
 	       initgroups(wanted_uid,-2) &&
-	       initgroups(wanted_uid,65534)
+	       initgroups(wanted_uid,65534) &&
 	       initgroups(wanted_uid,60001))
 #endif /* _HPUX_SOURCE */
 	    {
diff --git a/src/threads.h b/src/threads.h
index ec647a7f5a00e7f60b716fa75b541f8715b46955..e0905a3cbfd4053f65074bfe4d2c5df3d04546e1 100644
--- a/src/threads.h
+++ b/src/threads.h
@@ -441,6 +441,7 @@ void f_all_threads(INT32 args);
 #define th_cleanup()
 #define th_init_programs()
 #define th_self() ((void*)0)
+#define co_signal(X)
 #endif /* _REENTRANT */
 
 #ifdef __NT__