Commit Diff


commit - 64851eee5f6ba5fc9441074b9a11b9baaf064a90
commit + 69d1259cf9af6d288b34c4452db4c418e739f750
blob - 78c538acd8245e6618d10d47457d6986e440b554
blob + 42081e92afdb64f5a026f5f5716a936ee5d2be85
--- src/libthread/thread.c
+++ src/libthread/thread.c
@@ -279,6 +279,19 @@ threadunpin(void)
 		assert(0);
 	}
 	p->pinthread = nil;
+}
+
+void
+threadsysfatal(char *fmt, ...)
+{
+	char buf[256];
+	va_list arg;
+
+	va_start(arg, fmt);
+	vseprint(buf, buf+sizeof(buf), fmt, arg);
+	__fixargv0();
+	fprint(2, "%s: %s\n", argv0 ? argv0 : "<prog>", buf);
+	threadexitsall(buf);
 }
 
 static void
@@ -686,6 +699,8 @@ threadmainstart(void *v)
 	threadmain(threadargc, threadargv);
 }
 
+extern void (*_sysfatal)(char*, ...);
+
 int
 main(int argc, char **argv)
 {
@@ -715,6 +730,7 @@ main(int argc, char **argv)
 	_notejmpbuf = threadnotejmp;
 	_pin = threadpin;
 	_unpin = threadunpin;
+	_sysfatal = threadsysfatal;
 
 	_pthreadinit();
 	p = procalloc();