since 20 is much less than 128, this can't be the kernel. i think the
problem is in the discarded wait messages here: rc/plan9.c/^Waitfor
Where do you see discarded wait messages?
int
Waitfor(int pid, int)
{
thread *p;
Waitmsg *w;
char errbuf[ERRMAX];
while((w = wait()) != nil){
if(w->pid==pid){
setstatus(w->msg);
free(w);
return 0;
}
for(p = runq->ret;p;p = p->ret)
if(p->pid==w->pid){
p->pid=-1;
strcpy(p->status, w->msg);
}
This loop is trying to save the information about the
wait message. But it doesn't seem to get consulted
anywhere, and I have never understood why that particular
linked list is the one to be looking through.
Russ