On Mon, 2009-07-20 at 01:21 -0400, erik quanstrom wrote: > > one last kick of a dead horse: see that's exactly what I'm > > talking about -- all these exceptions and for what? I'm > > pretty sure if we change the devpipe today not to send > > a note nobody would even notice... > > since you're confident that this exception is spurious, > why don't you remove it from your kernel? your > argument would be much more convincing if you had > evidence that after a couple million pids, your cpu > server has experienced no funnies.
This does look like a curious experiment. Now, since I don't run a native Plan9 kernel, I did modify 9vx (one can't thank Russ enough for providing it!): --- a/src/9vx/a/devpipe.c +++ b/src/9vx/a/devpipe.c @@ -313,8 +313,9 @@ pipewrite(Chan *c, void *va, long n, vlong offset) print("pipewrite hi %lux\n", getcallerpc(&c)); if(waserror()) { /* avoid notes when pipe is a mounted queue */ - if((c->flag & CMSG) == 0) + /* if((c->flag & CMSG) == 0) postnote(up, 1, "sys: write on closed pipe", NUser); + */ nexterror(); } @@ -345,8 +346,9 @@ pipebwrite(Chan *c, Block *bp, ulong offset) if(waserror()) { /* avoid notes when pipe is a mounted queue */ - if((c->flag & CMSG) == 0) + /* if((c->flag & CMSG) == 0) postnote(up, 1, "sys: write on closed pipe", NUser); + */ nexterror(); } So far so good. The test2.c now returns -1 "i/o on a hangup channel" from write and the rest of the system seems to be pretty stable. The usual pipelines that I run ("ls | sort", "...|awk", "...|sed") all seem to be doing quite well. Unfortunately I don't think I can get to a couple of million pids in my 9vx as you've suggested. So I guess, in the end, it doesn't count, right? Thanks, Roman.