Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!mnetor!seismo!lll-crg!lll-lcc!pyramid!decwrl!sun!guy From: guy@sun.uucp (Guy Harris) Newsgroups: net.bugs.4bsd,net.unix-wizards Subject: Re: Interrupting find(1) Message-ID: <7566@sun.uucp> Date: Wed, 24-Sep-86 02:57:30 EDT Article-I.D.: sun.7566 Posted: Wed Sep 24 02:57:30 1986 Date-Received: Wed, 24-Sep-86 22:00:56 EDT References: <334@yabbie.rmit.oz> Organization: Sun Microsystems, Inc. Lines: 21 Xref: mnetor net.bugs.4bsd:952 net.unix-wizards:7973 > Chances are that when you hit ^C, the wait() is in process, and will > end up killing the exec'd process, but the interrupt is ignored by > find(1), and so it proceeds on its merry way exec'ing more things... "Fixed in 4.3." > The fix would be simply to change SIG_IGN to SIG_HOLD in both statements. But not that way. SIG_HOLD only appears in "/usr/include/sys/signal.h" as a historical holdover; setting the signal action to SIG_HOLD will *not* set the "p_sigmask" bit for that signal, so it won't hold it. The correct fix is to put a "sigblock"/"sigsetmask" pair around the "wait". > This behaviour was observed with 4.2bsd find(1) on both a Sun-2 and a > Vax-750. There's some chance you'll see it on other VAX models, too. -- Guy Harris {ihnp4, decvax, seismo, decwrl, ...}!sun!guy guy@sun.com (or guy@sun.arpa)