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>