[gccsdk] UnixLib, Signals & Threading

Alex Waugh alex at alexwaugh.com
Wed Jul 9 13:01:51 PDT 2008


Adam <lists at snowstone.org.uk> wrote:

> In message <9b8757bb4f.ajw498 at caramel.cp15.org>, Alex Waugh  wrote:
> 
> > Adam <lists at snowstone.org.uk> wrote:
> 
> > > I'm trying to get my head around handling signals in a threaded app.
> > > However, I keep just getting a stack backtrace written to stderr. As far
> > > as I can tell my signal handler never gets a look in.
> > 
> > Signals should execute in the context of the thread that caused them,
> > however they currently execute in the global context which makes it hard
> > to implement sigwait correctly as the context switcher wouldn't know
> > which thread to wake up on a signal (so it doesn't bother).
> > The only way to send a signal that sigwait will notice is to use
> > pthread_kill().
> 
> Thanks a lot for that - it's good to at least know it won't work in
> principle.
> 
> What, in that case, is the recommeded way to deal with signals in a
> multi-threaded app? A disappearing app + stackdump-to-stderr is not a
> total disaster while debugging, but it's not ideal for a released
> program.

The normal ANSI signal handling functions should work fine, provided you
don't call any pthread functions from them or expect them to be context
switched.

Alex

-- 
Alex Waugh                                           alex at alexwaugh.com

PHP, Roots, Subversion, WebJames and more from http://www.alexwaugh.com/




More information about the gcc mailing list