Continue the pthreads torture.
diff --git a/src/lib9/fork.c b/src/lib9/fork.c
index 4dbff87..841d2c2 100644
--- a/src/lib9/fork.c
+++ b/src/lib9/fork.c
@@ -1,4 +1,5 @@
 #include <u.h>
+#include <signal.h>
 #include <libc.h>
 #include "9proc.h"
 #undef fork
@@ -7,9 +8,15 @@
 p9fork(void)
 {
 	int pid;
+	sigset_t all, old;
 
+	sigfillset(&all);
+	sigprocmask(SIG_SETMASK, &all, &old);
 	pid = fork();
-	_clearuproc();
-	_p9uproc(0);
+	if(pid == 0){
+		_clearuproc();
+		_p9uproc(0);
+	}
+	sigprocmask(SIG_SETMASK, &old, nil);
 	return pid;
 }