Date: Thu, 06 Mar 2008 11:10:00 -0600 From: Derek Ragona <derek@computinginnovations.com> To: Martin McCormick <martin@dc.cis.okstate.edu>, freebsd-questions@freebsd.org Subject: Re: SIGHUP and Program Flow in a 6.2 Application Message-ID: <6.0.0.22.2.20080306110721.024330b0@mail.computinginnovations.com> In-Reply-To: <200803061346.m26DkTLS042008@m.it.okstate.edu> References: <200803061346.m26DkTLS042008@m.it.okstate.edu>
next in thread | previous in thread | raw e-mail | index | archive | help
At 07:46 AM 3/6/2008, Martin McCormick wrote: > This actually turned out to be a red herring. One of the >things I had to trace was an attempted read from /dev/ttyd0 in >which I was trying to go past the actual read. This appears to >be what thoroughly confused the trace. > > There was a logic error in the signal handler which >caused it to never exit and that was what prevented further >signals. It took me a while to figure all that out but it makes >sense. > > In my tinkering with embedded systems and >assembly-language programming, one often-times shuts off the >interrupts first thing during an interrupt handler because >disaster results if another interrupt comes in while one is >setting up the jump vector, etc. The signal handler hides all >those details, but it still has to take care of them. > > Anyway, when I fixed the logic of the handler, itself >and did not try to trace it, it does work as one would expect. > > I appreciate the help as it made me think and re-examine >what was happening. The man page more or less explains it if you >know what to look for but it wasn't close enough to what was >happening here to really help much. Good to hear you got things working. Debugging signal handlers and interrupt handlers is always a challenge. I am an old assembly coder too, and have done embedded work as well. It can be very challenging in any environment debugging these, particularly with re-entrancy issues. -Derek >Derek Ragona writes: > >Nothing needs to be in your handler function to continue running simply > >return from your function. However, depending on the signal you may wish > >to call the original signal handler. Signals like interrupts are chained > >linked lists of handlers. You can choose to break the chain, and have only > >your handler called, or keep the chain intact calling the other handlers. > >In this case, the chain appears to resume on return from the >routine I called on SIGHUP. >_______________________________________________ >freebsd-questions@freebsd.org mailing list >http://lists.freebsd.org/mailman/listinfo/freebsd-questions >To unsubscribe, send any mail to "freebsd-questions-unsubscribe@freebsd.org" > >-- >This message has been scanned for viruses and >dangerous content by MailScanner, and is >believed to be clean. -- This message has been scanned for viruses and dangerous content by MailScanner, and is believed to be clean.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?6.0.0.22.2.20080306110721.024330b0>