diff --git a/include/thread.h b/include/thread.h
index 7ba96e6..84adb22 100644
--- a/include/thread.h
+++ b/include/thread.h
@@ -22,6 +22,11 @@
 #define	yield		threadyield
 
 /*
+ * daemonize
+ */
+void	threaddaemonize(void);
+
+/*
  * per proc and thread data
  */
 void		**procdata(void);
diff --git a/src/libthread/Linux.c b/src/libthread/Linux.c
index 357e926..1c9d8c2 100644
--- a/src/libthread/Linux.c
+++ b/src/libthread/Linux.c
@@ -8,6 +8,9 @@
 #include "thread.h"
 #include "threadimpl.h"
 
+int ngetpid;
+
+
 /*
  * spin locks
  */
@@ -99,15 +102,12 @@
 	sigdelset(&mask, SIGUSR1);
 	sigsuspend(&mask);
 
-//print("%d %d awake again\n", time(0), getpid());
-
 	/*
 	 * We're awake.  Make USR1 not interrupt system calls.
 	 */
 	lock(r->l);
 	ignusr1(1);
 	if(r->asleep && r->pid == getpid()){
-//print("resleep %d\n", getpid());
 		/* Didn't really wake up - signal from something else */
 		goto again;
 	}
@@ -160,11 +160,15 @@
 		next = sf->next;
 		if(sf->pid >= 1 && kill(sf->pid, 0) < 0 && errno == ESRCH){
 			free(sf);
-			last->next = next;
+			if(last)
+				last->next = next;
+			else
+				stackfree = next;
 			sf = last;
 		}
 	}
-}	
+	unlock(&stacklock);
+}
 
 static int
 startprocfn(void *v)
@@ -240,7 +244,7 @@
 void
 sigusr2handler(int s)
 {
-	print("%d usr2 %d\n", time(0), getpid());
+/*	fprint(2, "%d usr2 %d\n", time(0), getpid()); */
 	if(threadexitsmsg)
 		_exits(threadexitsmsg);
 }
@@ -341,7 +345,8 @@
 {
 	Perproc *pp;
 
-	p->osprocid = getpid();
+	if(p)
+		p->osprocid = getpid();
 	pp = newperproc();
 	pp->proc = p;
 	if(p == nil)
diff --git a/src/libthread/ioproc.c b/src/libthread/ioproc.c
index 2296690..0bf7946 100644
--- a/src/libthread/ioproc.c
+++ b/src/libthread/ioproc.c
@@ -20,6 +20,8 @@
 xioproc(void *a)
 {
 	Ioproc *io, *x;
+
+	threadsetname("ioproc");
 	io = a;
 	/*
 	 * first recvp acquires the ioproc.
diff --git a/src/libthread/mkfile b/src/libthread/mkfile
index a301d48..fc68149 100644
--- a/src/libthread/mkfile
+++ b/src/libthread/mkfile
@@ -6,6 +6,7 @@
 OFILES=\
 	$SYSOFILES\
 	channel.$O\
+	daemonize.$O\
 	exec.$O\
 	ioproc.$O\
 	iorw.$O\
diff --git a/src/libthread/test/mkfile b/src/libthread/test/mkfile
index b3fd821..87dd932 100644
--- a/src/libthread/test/mkfile
+++ b/src/libthread/test/mkfile
@@ -3,6 +3,6 @@
 SHORTLIB=thread 9
 OFILES=
 
-TARG=tprimes tspawn tspawnloop
+TARG=tprimes tspawn tspawnloop tdaemon
 
 <$PLAN9/src/mkmany
diff --git a/src/libthread/thread.c b/src/libthread/thread.c
index 1837e7d..b41f9f3 100644
--- a/src/libthread/thread.c
+++ b/src/libthread/thread.c
@@ -20,6 +20,25 @@
 static	void		contextswitch(Context *from, Context *to);
 static	void		scheduler(Proc*);
 
+static void
+_threaddebug(char *fmt, ...)
+{
+	va_list arg;
+	char buf[128];
+	_Thread *t;
+
+	return;
+
+	va_start(arg, fmt);
+	vsnprint(buf, sizeof buf, fmt, arg);
+	va_end(arg);
+	t = proc()->thread;
+	if(t)
+		fprint(2, "%d.%d: %s\n", getpid(), t->id, buf);
+	else
+		fprint(2, "%d._: %s\n", getpid(), buf);
+}
+
 static _Thread*
 getthreadnow(void)
 {
@@ -50,6 +69,7 @@
 
 	t = v;
 	t->startfn(t->startarg);
+	memset(&v, 0xff, 32);	/* try to cut off stack traces */
 	threadexits(nil);
 }
 
@@ -81,7 +101,7 @@
 	/* 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-16;
+	t->context.uc.uc_stack.ss_size = t->stksize-64;
 	makecontext(&t->context.uc, (void(*)())threadstart, 1, t);
 
 	return t;
@@ -185,6 +205,7 @@
 	_Thread *t;
 
 	setproc(p);
+	_threaddebug("scheduler enter");
 	// print("s %p %d\n", p, gettid());
 	lock(&p->lock);
 	for(;;){
@@ -192,15 +213,15 @@
 			if(p->nthread == 0)
 				goto Out;
 			p->runrend.l = &p->lock;
-//print("%d sleep for jobs %d\n", time(0), getpid());
+			_threaddebug("scheduler sleep");
 			_procsleep(&p->runrend);
-//print("%d wake from jobs %d\n", time(0), getpid());
+			_threaddebug("scheduler wake");
 		}
 		delthread(&p->runqueue, t);
 		unlock(&p->lock);
 		p->thread = t;
 		p->nswitch++;
-		// print("run %s %d\n", t->name, t->id);
+		_threaddebug("run %d (%s)", t->id, t->name);
 		contextswitch(&p->schedcontext, &t->context);
 		p->thread = nil;
 		lock(&p->lock);
@@ -212,6 +233,7 @@
 	}
 
 Out:
+	_threaddebug("scheduler exit");
 	delproc(p);
 	lock(&threadnproclock);
 	if(p->sysproc)
@@ -447,11 +469,18 @@
 	threadmain(threadargc, threadargv);
 }
 
+void
+threadlinklibrary(void)
+{
+}
+
 int
 main(int argc, char **argv)
 {
 	Proc *p;
 
+	_threadsetupdaemonize();
+
 	threadargc = argc;
 	threadargv = argv;
 
diff --git a/src/libthread/threadimpl.h b/src/libthread/threadimpl.h
index 164ba97..d4acebe 100644
--- a/src/libthread/threadimpl.h
+++ b/src/libthread/threadimpl.h
@@ -5,8 +5,6 @@
 typedef struct Proc Proc;
 typedef struct _Procrendez _Procrendez;
 
-
-
 typedef struct Jmp Jmp;
 struct Jmp
 {
@@ -106,3 +104,5 @@
 extern void _pthreadinit(void);
 extern int _threadspawn(int*, char*, char**);
 extern int _runthreadspawn(int*, char*, char**);
+extern void _threadsetupdaemonize(void);
+extern void _threaddodaemonize(char*);
