Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 23 Mar 2000 16:53:53 -0800 (PST)
From:      Matthew Dillon <dillon@apollo.backplane.com>
To:        Matthew Dillon <dillon@apollo.backplane.com>
Cc:        Ben Smithurst <ben@scientia.demon.co.uk>, hackers@FreeBSD.ORG, stable@FreeBSD.ORG
Subject:   Re: repeatable lockup (pipe related?)
Message-ID:  <200003240053.QAA06073@apollo.backplane.com>
References:  <20000323222149.C87103@strontium.scientia.demon.co.uk> <200003232244.OAA05041@apollo.backplane.com>

next in thread | previous in thread | raw e-mail | index | archive | help
::	.SH foo, bar, baz
::
::and then a lot of junk text (I appended /etc/rc and /etc/rc.network). Then,
::when I do
::
::	nroff -ms foo.ms 2>&1 | less
::
::and quit 'less' straight away, the whole system seems to lockup.  ^T
::worked (sometimes), and showed troff using lots of system time (no user
::time). ping from another host worked, ctrl-alt-esc dropped into DDB ok,

    I've committed a fix to this in -current, 4.x, and 3.x.  Rev 1.61
    kern/sys_pipe.c (current), 1.60.2.1 in RELENG_4, something else in
    RELENG_3.  Sorry 2.2.x'rs, three is my limit :-)

    What happens is that the pipe writer checks for the reader going away
    before entering the while() loop on the write, but only checks 
    sporatically inside that loop.

    There are situations where the reader may go away while the writer is
    blocked and cause the writer to enter into an infinite loop because
    the writer believes there is a reader 'reading' when, in fact, the reader
    side is stuck in pipeclose().  They two sides then play ping-pong 
    tsleep/wakeup with each other forever.

					-Matt
					Matthew Dillon 
					<dillon@backplane.com>



To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-stable" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200003240053.QAA06073>