do not call exits in threaded programs
diff --git a/src/cmd/9p.c b/src/cmd/9p.c
index 0f0a1a6..cc4336b 100644
--- a/src/cmd/9p.c
+++ b/src/cmd/9p.c
@@ -19,7 +19,7 @@
 	fprint(2, "	stat name\n");
 //	fprint(2, "	ls name\n");
 	fprint(2, "without -a, name elem/path means /path on server unix!$ns/elem\n");
-	exits("usage");
+	threadexitsall("usage");
 }
 
 void xread(int, char**);
@@ -142,7 +142,7 @@
 		write(1, buf, n);
 	if(n < 0)
 		sysfatal("read error: %r");
-	exits(0);	
+	threadexitsall(0);	
 }
 
 void
@@ -165,7 +165,7 @@
 		write(1, buf, n);
 	if(n < 0)
 		sysfatal("read error: %r");
-	exits(0);	
+	threadexitsall(0);	
 }
 
 void
@@ -196,7 +196,7 @@
 	}
 	if(n < 0)
 		sysfatal("read error: %r");
-	exits(0);	
+	threadexitsall(0);	
 }
 
 void
@@ -220,7 +220,7 @@
 			sysfatal("write error: %r");
 	if(n < 0)
 		sysfatal("read error: %r");
-	exits(0);	
+	threadexitsall(0);	
 }
 
 void
@@ -245,5 +245,5 @@
 	fmtinstall('D', dirfmt);
 	fmtinstall('M', dirmodefmt);
 	print("%D\n", d);
-	exits(0);
+	threadexitsall(0);
 }
diff --git a/src/cmd/9pserve.c b/src/cmd/9pserve.c
index 7ff30ef..c15c156 100644
--- a/src/cmd/9pserve.c
+++ b/src/cmd/9pserve.c
@@ -119,7 +119,7 @@
 {
 	fprint(2, "usage: 9pserve [-lv] address\n");
 	fprint(2, "\treads/writes 9P messages on stdin/stdout\n");
-	exits("usage");
+	threadexitsall("usage");
 }
 
 uchar vbuf[128];
diff --git a/src/cmd/9term/9term.c b/src/cmd/9term/9term.c
index 257b87b..31c9f28 100644
--- a/src/cmd/9term/9term.c
+++ b/src/cmd/9term/9term.c
@@ -1064,7 +1064,7 @@
 		 */
 		s = setecho(sfd, 0);
 		if(write(rcfd, buf, n) < 0)
-			exits(0);
+			threadexitsall(0);
 		if(s)
 			setecho(sfd, s);
 	}
diff --git a/src/cmd/acme/acme.c b/src/cmd/acme/acme.c
index 917aefc..b969180 100644
--- a/src/cmd/acme/acme.c
+++ b/src/cmd/acme/acme.c
@@ -114,7 +114,7 @@
 	default:
 	Usage:
 		fprint(2, "usage: acme -a -c ncol -f fontname -F fixedwidthfontname -l loadfile -W winsize\n");
-		exits("usage");
+		threadexitsall("usage");
 	}ARGEND
 
 	fontnames[0] = estrdup(fontnames[0]);
@@ -147,12 +147,12 @@
 /*
 	if(geninitdraw(nil, derror, fontnames[0], "acme", nil, Refnone) < 0){
 		fprint(2, "acme: can't open display: %r\n");
-		exits("geninitdraw");
+		threadexitsall("geninitdraw");
 	}
 */
 	if(initdraw(derror, fontnames[0], "acme") < 0){
 		fprint(2, "acme: can't open display: %r\n");
-		exits("initdraw");
+		threadexitsall("initdraw");
 	}
 
 	d = display;
@@ -192,19 +192,19 @@
 	chansetname(cwarn, "cwarn");
 	if(cwait==nil || ccommand==nil || ckill==nil || cxfidalloc==nil || cxfidfree==nil || cerr==nil || cexit==nil || cwarn==nil){
 		fprint(2, "acme: can't create initial channels: %r\n");
-		exits("channels");
+		threadexitsall("channels");
 	}
 
 	mousectl = initmouse(nil, screen);
 	if(mousectl == nil){
 		fprint(2, "acme: can't initialize mouse: %r\n");
-		exits("mouse");
+		threadexitsall("mouse");
 	}
 	mouse = &mousectl->m;
 	keyboardctl = initkeyboard(nil);
 	if(keyboardctl == nil){
 		fprint(2, "acme: can't initialize keyboard: %r\n");
-		exits("keyboard");
+		threadexitsall("keyboard");
 	}
 	mainpid = getpid();
 	startplumbing();
diff --git a/src/cmd/import.c b/src/cmd/import.c
index 456f663..428cf90 100644
--- a/src/cmd/import.c
+++ b/src/cmd/import.c
@@ -33,7 +33,7 @@
 usage(void)
 {
 	fprint(2, "usage: %s [-df] [-s service] [-n remote-ns] [-p remote-prog] remote-system\n", argv0);
-	exits("usage");
+	threadexitsall("usage");
 }
 
 void
diff --git a/src/cmd/vac/vac.c b/src/cmd/vac/vac.c
index 761310b..8065e9a 100644
--- a/src/cmd/vac/vac.c
+++ b/src/cmd/vac/vac.c
@@ -105,7 +105,7 @@
 usage(void)
 {
 	fprint(2, "usage: %s [-amqsv] [-h host] [-d vacfile] [-b blocksize] [-i name] [-e exclude] [-f vacfile] file ... \n", argv0);
-	exits("usage");
+	threadexitsall("usage");
 }
 
 void
diff --git a/src/cmd/vac/vacfs.c b/src/cmd/vac/vacfs.c
index bd36de8..5105034 100644
--- a/src/cmd/vac/vacfs.c
+++ b/src/cmd/vac/vacfs.c
@@ -206,7 +206,7 @@
 usage(void)
 {
 	fprint(2, "usage: %s [-sd] [-h host] [-c ncache] [-m mountpoint] vacfile\n", argv0);
-	exits("usage");
+	threadexitsall("usage");
 }
 
 char*