Subject: Re: signal(SIGSEGV, SIG_IGN) -> 100% CPU
To: None <tech-kern@netbsd.org>
From: Wolfgang Rupprecht <wolfgang@wsrcc.com>
List: tech-kern
Date: 06/10/1999 13:09:54
> I know that if you do signal(SIGSEGV, handler) you will end up
> with a process that keeps entering the handler because, as far as I know,
> the condition which caused the SEGV never gets reset.

I think there was an amusing hack in the old /bin/sh that used the
SEGV to grow the heap.  Its been a while, so perhaps I'm mixing things
up, but I think it did something to the effect of bumping up the brk
via sbrk() every time the SEGV handler got hit.  The the segv handler
would then return and the program would re-try the access.

All this worked just fine if something did walk of the end of the
heap.  It kind of failed badly if you were running on a 68k unix and a
NULL pointer reference is what got you into the segv handler. ;-) 

-wolfgang
-- 
       Wolfgang Rupprecht <wolfgang+gnus@dailyplanet.wsrcc.com>
		    http://www.wsrcc.com/wolfgang/
DGPS signals via the Internet  http://www.wsrcc.com/wolfgang/gps/dgps-ip.html