This is the mail archive of the
mailing list for the GDB project.
Re: single-step SIGALRM issue
"it is expecting a SIGTRAP signal but sometimes it receives a SIGALRM
Why you can't aways return SIGTRAP?
On Tue, Jan 20, 2009 at 01:50, Laszlo Benedek <email@example.com> wrote:
> I am part of a team developing a simulator and we have problems
> debugging the simulator with gdb.
> The simulator is an application written for x86-linux and it was
> written in c/c++.
> It uses the SIGALRM signal to simulate interrupts.
> The test that fails:
> I start the simulator in gdb and insert a breakpoint at a certain function call.
> When the program reaches the breakpoint it correctly stops, then I try
> to use single stepping.
> At this point something wierd happens, sometimes it works fine and I
> can use the step command
> but sometimes the program starts to run and then hangs.
> I tried to find the reason of this and here is what I've found. When
> gdb starts single stepping
> it is expecting a SIGTRAP signal but sometimes it receives a SIGALRM
> instead. In this case it
> decides to switch the inferior in 'continue' mode, inserts a
> breakpoint and waits. In this case our
> program continues to run from the original breakpoint and eventually
> it reaches a point where it calls sigsuspend
> and it waits for signals but it does not receive any signals anymore.
> It seems that gdb is blocking them somehow
> when this single-step => continue switch happens. I read the comment
> in the gdb source and it says that gdb expects
> that the program's signal handler will be called and it will stop at
> the return of the signal handler because gdb just
> inserted a breakpoint there. For some reason the signal handler of our
> program is not called at all after it gets into this 'continue' mode.
> I'd like to fix this or at least decide if this is an error in gdb or
> in the simulator (or both?), but I don't really know how to continue.
> Has anyone experienced anything like this before ?
> Any comment, idea would be appreciated.
> Thanks for your help in advance!
> Best regards,
> Laszlo Benedek