Re: "finish" command leads to SIGTRAP
David Griffiths <[email protected]>
| Newsgroups | gmane.comp.gdb.devel |
|---|---|
| Message-ID | <CA++j6c7Vazk-A3e8T5xzMNJzhorB9DW-y8Hye7v-rwUKVnEzgA@mail.gmail.com> |
It's something to do with the nature of single stepping through a "popfq" instruction. Given the following instructions: 0x7fffe104638f: add $0x8,%rsp 0x7fffe1046393: popfq 0x7fffe1046394: pop %rbp 0x7fffe1046395: jmpq *%rax If I set a breakpoint at the first of that set and single step through, I end up with: eflags 0x346 [ PF ZF TF IF ] but if I set a breakpoint on the last instruction and avoid single stepping I get: eflags 0x246 [ PF ZF IF ] and I think it's that TF that is causing the SIGTRAP? On Thu, 21 Feb 2019 at 13:12, Pedro Alves <[email protected]> wrote: > Might be unrelated, but ISTR that there used to be a kernel bug > that would lead to the cpu's trace flag getting stuck set > when you step in a signal handler. That would result in > SIGTRAP happening at every step from that point on. Could > that be the case here? > > I'd look at "set debug displaced on" too. Otherwise, it's a matter > at staring at the logs, and trying to understand what is happening. > Basically, "finish" sets a breakpoint at the caller and runs to it. > But all sorts of other things can happen behind the scenes. > > Thanks, > Pedro Alves > -- David Griffiths, Senior Software Engineer Undo <https://undo.io> | Resolve even the most challenging software defects with software flight recorder technology Software reliability report: optimizing the software supplier and customer relationship <https://info.undo.io/software-reliability-report-optimizing-supplier-and-customer-relationship>