veench@ark.UUCP (02/27/87)
How to create the crash: cat 2>&1 | cat type <del> 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