Does you executable captures Ctrl+C/SIGINT and after that resending it to the real GDB?
How should it looks?
After SIGINT to debugging exec in C::B "Debugger(debug)" log view contains following (my comments under ///):
/// run exec to while(1) loop...
> continue
/// send CTRL+C
Cannot access memory at address 0x0
Program received signal SIGINT, Interrupt.
0x402b9d58 in ?? ()
>>>>>>cb_gdb:
/// some commands by debugee to obtain current exec state