Date: Thu, 13 Nov 1997 13:03:01 -0800 (PST) From: Archie Cobbs <archie@whistle.com> To: brianc@milkyway.com (Brian Campbell) Cc: hackers@freebsd.org Subject: Re: unkillable process Message-ID: <199711132103.NAA27953@bubba.whistle.com> In-Reply-To: <19971113154657.06089@milkyway.com> from Brian Campbell at "Nov 13, 97 03:46:57 pm"
next in thread | previous in thread | raw e-mail | index | archive | help
Brian Campbell writes:
> On Thu, Nov 13, 1997 at 10:48:17AM -0800, Archie Cobbs wrote:
> > Simon Shapiro writes:
> > > Hi Archie Cobbs; On 12-Nov-97 you wrote:
> > > > 1. Create a named pipe
> > > > 2. Start typing into it using cat
> > > > 3. Hit control-C as many times as you want
> > > >
> > > > You'll see that the process will not die even with kill -9,
> > > > as it is stuck in uninterrupible disk sleep ("fifo").
> > > >
> > > > But as soon as you read from the other end of the pipe,
> > > > the process exits.
> > > >
> > > > Is there a missing PCATCH flag to tsleep() somewhere?
> > > > Is this appropriate behavior? (hint: rhetorical question)
> > >
> > > From what I remember, this is a typical (if ugly Unix behavior.
> >
> > Hmm... does anyone else besides me have the opinion that,
> > while it may be typical, this behavior is also *broken*?
>
> I don't think my 2.2.5 system behaves as you describe.
>
> `mkfifo p; cat >p` followed by ^C complains about not being able to
> create p. It does, however, interrupt immediately. If you type some
> stuff before hitting ^C, cat still hasn't managed to open the fifo
> (same complaint) but the command is still immediately interrupted.
>
> If you use `cat <>p` (to open the fifo read-write so the open doesn't
> have to wait for a reader), the open will succeed and you can write
> some data that will be readable by another process, unless you
> interrupt it in which case the command immediately exits and the data
> is lost.
>
> Perhaps you're seeing some funny behaviour due to your shell?
You're right.. it must be a tcsh(1) problem... the following
command hangs in tcsh but not sh:
$ mkfifo p; cat > p
^C
But it's still a kernel bug, no? The tcsh process is stuck in
some kind of uninterruptible sleep, which is not appropriate here:
UID PID PPID CPU PRI NI VSZ RSS WCHAN STAT TT TIME COMMAND
0 4042 4041 0 10 0 612 868 ppwait Ds p2 0:01.09 -tcsh (tcsh)
0 4177 4042 0 2 0 612 888 fifo SV+ p2 0:00.01 -tcsh (tcsh)
I can kill the second process (pid 4177) but not the first (pid 4042),
even with kill -9.
-Archie
P.S. How do you annotate a previously sent bug report? :-)
___________________________________________________________________________
Archie Cobbs * Whistle Communications, Inc. * http://www.whistle.com
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199711132103.NAA27953>
