Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 17 Aug 2001 11:16:57 +0300
From:      Peter Pentchev <roam@ringlet.net>
To:        brian o'shea <boshea@netapp.com>
Cc:        Hans Zaunere <zaunere@yahoo.com>, freebsd-hackers@FreeBSD.ORG
Subject:   Re: Signal Handling
Message-ID:  <20010817111657.B556@ringworld.oblivion.bg>
In-Reply-To: <20010814211158.A22386@netapp.com>; from boshea@netapp.com on Tue, Aug 14, 2001 at 09:11:58PM -0700
References:  <20010814152536.B27553@netapp.com> <20010815024750.21433.qmail@web12802.mail.yahoo.com> <20010814211158.A22386@netapp.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, Aug 14, 2001 at 09:11:58PM -0700, brian o'shea wrote:
> On Tue, Aug 14, 2001 at 07:47:50PM -0700, Hans Zaunere wrote:
> > > [...]
> > > > 2) If a 10k binary is running, the signal is sent, and the program
> > > > is reloaded from disk, but is 100k (or 1k even) how does the
> > > > signal handling function get called, taking into account what
> > > > Stevens says.  Steven states that the sigmask remains for calls
> > > > across exec, so wouldn't the wrong address to the handler function
> > > > be used?
> > > 
> > > No, the signal mask is not the address of the handler function.  It
> > > is the bit mask which determines which signals are blocked.
> > > 
> > 
> > Sorry, I think I miss spoke myself.  If a signal handler is setup in
> > the running process, and exec is called, replacing the same program,
> > but this time, the program is much smaller or bigger, will the signal
> > handler function be in the right place?  The same program is exec'd,
> > but since it's a different size, won't the signal handler function
> > pointer, point to the wrong place?  
> 
> If a program calls exec on the file that is the current text file (i.e.
> argv[0]), then the text segment of the process will be the same size as
> it was before the call to exec, because it will be identical.  The only
> reason why the process' size might (and probably will) be different is
> because of any dynamically allocated memory, and because of and stack
> growth from function calls and local variable allocation.  Neither of
> these effect the address of any of the functions in the program
> (including the signal handlers).

This is not necessarily true; a program might exec() a file by the same
name, but with different contents - e.g. restarting a recompiled server.

G'luck,
Peter

-- 
I've heard that this sentence is a rumor.

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20010817111657.B556>