GNU bug report logs - #47067
28.0.50; [feature/native-comp] Crash while scrolling through dispnew.c

Previous Next

Package: emacs;

Reported by: Eli Zaretskii <eliz <at> gnu.org>

Date: Thu, 11 Mar 2021 11:28:02 UTC

Severity: normal

Found in version 28.0.50

Done: Eli Zaretskii <eliz <at> gnu.org>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: Pip Cet <pipcet <at> gmail.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 47067 <at> debbugs.gnu.org, Andrea Corallo <akrl <at> sdf.org>
Subject: bug#47067: 28.0.50; [feature/native-comp] Crash while scrolling through dispnew.c
Date: Sat, 13 Mar 2021 18:55:37 +0000
On Sat, Mar 13, 2021 at 5:26 PM Eli Zaretskii <eliz <at> gnu.org> wrote:
> > From: Pip Cet <pipcet <at> gmail.com>
> > Date: Sat, 13 Mar 2021 17:10:08 +0000
> > Cc: Andrea Corallo <akrl <at> sdf.org>, 47067 <at> debbugs.gnu.org
> >
> > > > It's a long function, that might not have been enough.
> > >
> > > But since I found those two, everything before that is irrelevant,
> > > right?
> >
> > Assuming all code paths hit these insns, yes.
>
> Then tell me how far back to go.
>
> Or, better yet, perhaps there's a way of displaying that code in C?

Sure! Put the defun in a file called breakage.el. Then open emacs -Q
in GDB and evaluate

(require 'comp)
(let ((comp-debug 3) (comp-verbose 3))
  (load (native-compile "breakage.el")))

Then set a GDB breakpoint on
F632d626567696e6e696e672d6f662d73746174656d656e742d31_c_beginning_of_statement_1_0,
continue and evaluate

(c-beginning-of-stmt-1)

In GDB, you should now see the "source" code interspersed with the
disassembly (if you have that enabled).

I'd suggest to try disass/rs next and post the entire output, but you
know your way around gdb much better than I do :-)

The code you're looking for looks like this:

7961      /* calling subr: < */
7962      frame[(int)0] = freloc->R3c__0 ((long long)2, (&frame[(int)0]));
   0x00007fffec660f41 <+3409>:    4c 89 f6    mov    %r14,%rsi
   0x00007fffec660f44 <+3412>:    bf 02 00 00 00    mov    $0x2,%edi

(but different, of course, because of the different architecture).

> > Since mingw (at least the version I could find) declares setjmp with
> > the "returns_twice" attribute, I'm assuming their implementation is
> > not such that you can call it through a function pointer.
>
> I think you are looking at a 64-bit MinGW64, but I'm out of my depth
> here anyway.  If you want to pursue this further, the implementation I
> use is in MSVCRT.DLL.

Thanks!

Pip




This bug report was last modified 4 years and 44 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.