Skip site navigation (1)Skip section navigation (2)
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>