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>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.