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.