Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!utgpu!water!watnot!watmath!clyde!cbatt!ihnp4!ptsfa!lll-lcc!seismo!mcvax!botter!ark!veench From: veench@ark.UUCP Newsgroups: comp.os.minix Subject: How to crash MINIX in a nice way, and the bugfix Message-ID: <917@ark.cs.vu.nl> Date: Fri, 27-Feb-87 08:40:13 EST Article-I.D.: ark.917 Posted: Fri Feb 27 08:40:13 1987 Date-Received: Mon, 2-Mar-87 21:45:56 EST Reply-To: veench@cs.vu.nl (Veen van Dick) Distribution: world Organization: VU Informatica, Amsterdam Lines: 20 Keywords: bug with reviving readers on a pipe How to create the crash: cat 2>&1 | cat type This causes a do_close on every filedescriptor of the first cat, and twice a release and on the second cat. So the variable reviving has the value 2, and in get_work there will only one proces be found to be revived. The fix is simple, On page 644 of the book in file fs/pipe.c on line 10549 is found: if (rfp->fp_suspended == NOT_SUSPENDED) return; This should be: if (rfp->fp_suspended == NOT_SUSPENDED || rfp->fp_revived == REVIVING) return; --------------------------- Dick van Veen