From c4153b7755e3a4f3cab57ad8cbe85d18cc7cbd77 Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Mon, 27 May 2013 01:09:34 +0200 Subject: [PATCH] kernel: closechanq error catch potential interrupt error from kproc(). this can happen when we run out of processes, then newproc() will call rsrcwait() which does tsleep(). if the process gets a note, this might raise a interrupt error. --- sys/src/9/port/chan.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/sys/src/9/port/chan.c b/sys/src/9/port/chan.c index d0d0ce4bb..9577eb8d3 100644 --- a/sys/src/9/port/chan.c +++ b/sys/src/9/port/chan.c @@ -536,7 +536,10 @@ closechanq(Chan *c) if(up != 0 && palloc.Lock.p != up && canqlock(&clunkq.q)){ c = up->dot; up->dot = nil; - kproc("closeproc", closeproc, nil); + if(!waserror()){ + kproc("closeproc", closeproc, nil); + poperror(); + } up->dot = c; }else wakeup(&clunkq.r);