From 4a6f0510731b99025c51ce4dc35eee08f697f91a Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Wed, 22 Aug 2007 09:14:25 -0400 Subject: 9pserve: fix a new race involving assert(c->nmsg == 0). Just like outputthread can have processed the message but not yet called msgput, the same is true of the connoutthread, so we cannot check c->nmsg until after the connoutthread has shut down gracefully. --- src/cmd/9pserve.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/cmd/9pserve.c') diff --git a/src/cmd/9pserve.c b/src/cmd/9pserve.c index f7b76bf9..ab27e61a 100644 --- a/src/cmd/9pserve.c +++ b/src/cmd/9pserve.c @@ -560,13 +560,13 @@ connthread(void *arg) sendq(outq, &sync); recvp(c->outqdead); - /* should be no messages left anywhere. */ - assert(c->nmsg == 0); - /* everything is quiet; can close the local output queue. */ sendq(c->outq, nil); recvp(c->outqdead); + /* should be no messages left anywhere. */ + assert(c->nmsg == 0); + /* clunk all outstanding fids */ for(i=0; ifid[i]; h; h=hnext){ -- cgit v1.2.3