bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#47067: 28.0.50; [feature/native-comp] Crash while scrolling through


From: Eli Zaretskii
Subject: bug#47067: 28.0.50; [feature/native-comp] Crash while scrolling through dispnew.c
Date: Sat, 13 Mar 2021 17:27:27 +0200

> From: Pip Cet <pipcet@gmail.com>
> Date: Sat, 13 Mar 2021 11:24:28 +0000
> Cc: Andrea Corallo <akrl@sdf.org>, 47067@debbugs.gnu.org
> 
> On Sat, Mar 13, 2021 at 11:10 AM Eli Zaretskii <eliz@gnu.org> wrote:
> > > From: Pip Cet <pipcet@gmail.com>
> > > Date: Sat, 13 Mar 2021 08:53:04 +0000
> > > Cc: Andrea Corallo <akrl@sdf.org>, 47067@debbugs.gnu.org
> > >
> > > It's c-beginning-of-statement-1 that I think is the immediate caller.
> >
> > It's nowhere in the C backtrace, only its caller
> 
> But it was in one of the previous backtraces?

Too many moons ago.  The ABI was bumped since then, and so did the
*.eln files.

> > > Can you disassemble the function around 0x09c32285 (or, in another
> > > dump, whatever calls Flss), particularly the 256 bytes or so before
> > > that EIP?
> >
> > Below.  The updated address for the caller of Flss is 0x09d82285,
> > which is not in any function whose name is known to GDB.
> 
> That's normal, assuming you didn't compile with comp-debug > 0.

If that's normal, why did Andrea say that he didn't see such "??" in
his backtraces?  And if that's because Andrea builds with comp-debug
above the default zero, then I think either the doc string or the set
of values (or both) need to be updated:

  (defcustom comp-debug 0
    "Debug level for native compilation, a number between 0 and 3.
  This is intended for debugging the compiler itself.
    0 no debugging output.
      This is the recommended value unless you are debugging the compiler 
itself.
    1 emit debug symbols and dump pseudo C code.
    2 dump gcc passes and libgccjit log file.
    3 dump libgccjit reproducers."

The first line is somewhat deceptive, as it doesn't say portions of
the backtrace will be anonymous; the backtrace is useful even if not
"debugging the compiler itself".  And the description of level 1 says
it will also "dump pseudo C code", which I don't think is needed for
most of the debugging.  Maybe we need an intermediate level that just
leaves the symbols without dumping the pseudo code?

> >    0x09d82268:  mov    %edi,0x4(%esp)
> >    0x09d8226c:  mov    %eax,-0xe8(%ebp)
> >    0x09d82272:  mov    %edx,-0xe4(%ebp)
> >    0x09d82278:  movl   $0x2,(%esp)
> >    0x09d8227f:  call   *0x1318(%ebx)
> >    0x09d82285:  mov    %edx,-0xec(%ebp)  <<<<<<<<<<<<<<<<<<<<
> 
> So EDI is bunk at this point. Can you go back a bit further to where
> it's initialized?

Sorry, I don't understand: I gave you the disassembly of 512 bytes
before, isn't that enough to see where EDI is assigned the value?  Or
what do you mean by "go back"?





reply via email to

[Prev in Thread] Current Thread [Next in Thread]