SIGINT, or more commonly known as the '
GDB usually traps this signal, and other signals such as
SIGSEGV(Segmentation Fault), so that you can trace buggy behaviour that is causing your application to fail. But once in a while, the error may occur after the signal is sent, when the code failure resides within the signal handler.
However the default behaviour of GDB is to trap these signals and subsequently consume them, in effect preventing the bug from occurring. To prevent unwanted behaviour in rare cases such as mine, you need to issue the following command:
(gdb) handle SIGINT pass
Given that GDB utilises this signal internally, it will ask you for a confirmation to change it. Say '
y' to it, and GDB will correspondingly pass the signal to the application after trapping, which will give you a chance to debug the handler code that is causing the bug.