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.


Reply via email to