paranoia
diff --git a/src/libthread/daemonize.c b/src/libthread/daemonize.c
index 8f4d5ee..c6e00d1 100644
--- a/src/libthread/daemonize.c
+++ b/src/libthread/daemonize.c
@@ -38,7 +38,15 @@
 		raise(WTERMSIG(status));
 		_exit(98);	/* not reached */
 	}
-	fprint(2, "%s: wait pid %d status 0x%ux\n", pid, status);
+	if(WIFSTOPPED(status)){
+		fprint(2, "%s: wait pid %d stopped\n", argv0, pid);
+		return;
+	}
+	if(WIFCONTINUED(status)){
+		fprint(2, "%s: wait pid %d continued\n", argv0, pid);
+		return;
+	}
+	fprint(2, "%s: wait pid %d status 0x%ux\n", argv0, pid, status);
 	_exit(99);
 }
 
diff --git a/src/libthread/thread.c b/src/libthread/thread.c
index 550cc05..2b6d1e3 100644
--- a/src/libthread/thread.c
+++ b/src/libthread/thread.c
@@ -112,12 +112,19 @@
 	sigprocmask(SIG_BLOCK, &zero, &t->context.uc.uc_sigmask);
 
 	/* must initialize with current context */
-	getcontext(&t->context.uc);
+	if(getcontext(&t->context.uc) < 0)
+		sysfatal("threadalloc getcontext: %r");
 
 	/* call makecontext to do the real work. */
 	/* leave a few words open on both ends */
 	t->context.uc.uc_stack.ss_sp = t->stk+8;
 	t->context.uc.uc_stack.ss_size = t->stksize-64;
+#ifdef __sun__		/* sigh */
+	/* can avoid this with __MAKECONTEXT_V2_SOURCE but only on SunOS 5.9 */
+	t->context.uc_stack.ss_sp = 
+		(char*)t->context.uc_stack.ss_sp
+		+t->context.uc_stack.ss_size;
+#endif
 	makecontext(&t->context.uc, (void(*)())threadstart, 1, t);
 
 	return t;