cardoe/drumfish — pull request #1 by jcreekmore (2014-02-22 02:36:15+00:00)
Title: Cancel the thread to avoid recursive SIGINTs.

When killing the application using Ctrl-C on the command line,
you usually saw the UARTs "stopped" twice. The signal handler
would execute the avr_terminate() code, which would try to stop
the UART pty threads by issuing a SIGINT to the thread. This
would cause the signal handler to be invoked again, causing
avr_terminate() to run again.

There are really two ways to fix the problem. First, we can just
cancel the thread instead of sending a signal to it. Otherwise,
we can filter out the SIGINT once we have received it. That change
requires a change to simavr, where canceling the thread required
a change to drumfish, so I chose to cancel the thread.