unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: Eli Zaretskii <eliz@gnu.org>
To: Andy Moreton <andrewjmoreton@gmail.com>
Cc: 43700@debbugs.gnu.org
Subject: bug#43700: 28.0.50; Crash creating a second frame
Date: Thu, 01 Oct 2020 15:53:53 +0300	[thread overview]
Message-ID: <83y2kqgl9a.fsf@gnu.org> (raw)
In-Reply-To: <86tuvf6ndi.fsf@gmail.com> (message from Andy Moreton on Wed, 30 Sep 2020 21:06:01 +0100)

> From: Andy Moreton <andrewjmoreton@gmail.com>
> Date: Wed, 30 Sep 2020 21:06:01 +0100
> 
> #1  0x00000004002727cc in emacs_abort () at C:/emacs/git/emacs/master/src/w32fns.c:10832
>         button = 0x6
> #2  0x000000040010d005 in terminate_due_to_signal (sig=0xb, backtrace_limit=0x28) at C:/emacs/git/emacs/master/src/emacs.c:408
> No locals.
> #3  0x0000000400137156 in handle_fatal_signal (sig=0xb) at C:/emacs/git/emacs/master/src/sysdep.c:1768
> No locals.
> #4  0x0000000400137129 in deliver_thread_signal (sig=0xb, handler=0x40013713e <handle_fatal_signal>) at C:/emacs/git/emacs/master/src/sysdep.c:1760
>         old_errno = 0x2
> #5  0x0000000400137192 in deliver_fatal_thread_signal (sig=0xb) at C:/emacs/git/emacs/master/src/sysdep.c:1780
> No locals.
> #6  0x0000000400313e52 in _gnu_exception_handler (exception_data=0xbf9380) at C:/_/M/mingw-w64-crt-git/src/mingw-w64/mingw-w64-crt/crt/crt_handler.c:223
>         old_handler = <optimized out>
>         action = 0x0
>         reset_fpu = 0x0
> #7  0x00007ff8cca57ff8 in msvcrt!__C_specific_handler () from C:\WINDOWS\System32\msvcrt.dll
> No symbol table info available.
> #8  0x00007ff8ce3b111f in ntdll!.chkstk () from C:\WINDOWS\SYSTEM32\ntdll.dll
> No symbol table info available.
> #9  0x00007ff8ce35b474 in ntdll!RtlRaiseException () from C:\WINDOWS\SYSTEM32\ntdll.dll
> No symbol table info available.
> #10 0x00007ff8ce3afc4e in ntdll!KiUserExceptionDispatcher () from C:\WINDOWS\SYSTEM32\ntdll.dll
> No symbol table info available.
> #11 0x00000004002c86e5 in lookup_image (f=0x5123410, spec=XIL(0xbc42793), face_id=0xffffffff) at C:/emacs/git/emacs/master/src/image.c:2334
>         img = 0xbc42773
>         hash = 0x5123410
>         face = 0x0
>         foreground = 0x4
>         background = 0x2c0002

If you put a breakpoint in lookup_image, on the line indicated below:

  ptrdiff_t
  lookup_image (struct frame *f, Lisp_Object spec, int face_id)
  {
    struct image *img;
    EMACS_UINT hash;

    struct face *face = (face_id >= 0) ? FACE_FROM_ID (f, face_id)
      : FACE_FROM_ID (f, DEFAULT_FACE_ID);
    unsigned long foreground = FACE_COLOR_TO_PIXEL (face->foreground, f); <<<<
    unsigned long background = FACE_COLOR_TO_PIXEL (face->background, f);

and condition the breakpoint by face == 0, does it break before the
crash when you perform the steps that reproduces the problem?

If 'face' is a NULL pointer there (as your backtrace shows), the next
line will segfault, and the rest is more-or-less clear.  What I don't
understand is this part:

> #11 0x00000004002c86e5 in lookup_image (f=0x5123410, spec=XIL(0xbc42793), face_id=0xffffffff) at C:/emacs/git/emacs/master/src/image.c:2334

Why does face_id have the value 0xffffffff?  The caller passes -1:

  DEFUN ("image-mask-p", Fimage_mask_p, Simage_mask_p, 1, 2, 0,
	 doc: /* Return t if image SPEC has a mask bitmap.
  FRAME is the frame on which the image will be displayed.  FRAME nil
  or omitted means use the selected frame.  */)
    (Lisp_Object spec, Lisp_Object frame)
  {
    Lisp_Object mask;

    mask = Qnil;
    if (valid_image_p (spec))
      {
	struct frame *f = decode_window_system_frame (frame);
	ptrdiff_t id = lookup_image (f, spec, -1);  <<<<<<<<<<<<<<

and the prototype of lookup_image says its last argument is an 'int'.
So either this is a GDB bug, or there's some subtle problem here that
I cannot explain (a compiler bug, perhaps?).

Did you change anything in your development environment lately, like
installed a different version of the compiler or Binutils or the MinGW
runtime?





  parent reply	other threads:[~2020-10-01 12:53 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-29 10:46 bug#43700: 28.0.50; Crash creating a second frame Andy Moreton
2020-09-29 14:37 ` Eli Zaretskii
2020-09-29 14:49   ` Andy Moreton
2020-09-30 20:06     ` Andy Moreton
2020-10-01  0:15       ` Andy Moreton
2020-10-01 12:53       ` Eli Zaretskii [this message]
2020-10-02  0:38         ` Andy Moreton
2020-10-02 11:49           ` Eli Zaretskii
2020-10-02 23:07             ` Andy Moreton
2020-10-03  8:16               ` Eli Zaretskii
2020-10-03 12:26                 ` Andy Moreton
2020-10-03 12:45                   ` Eli Zaretskii
2020-10-03 13:40                     ` Andy Moreton
2020-10-03 14:02                       ` Eli Zaretskii
2020-10-03 14:05                     ` Andy Moreton
2020-10-03 14:32                       ` Eli Zaretskii
2020-10-03 17:03                         ` Andy Moreton
2020-10-03 17:18                           ` Eli Zaretskii
2020-10-03 17:21                           ` Lars Ingebrigtsen
2020-10-03 17:54                             ` Eli Zaretskii
2020-10-03 17:56                               ` Lars Ingebrigtsen
2020-10-03 18:00                                 ` Eli Zaretskii
2020-10-03 18:21                               ` Andy Moreton
2020-10-03 18:29                                 ` Eli Zaretskii
2020-10-03 17:51                           ` Eli Zaretskii

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=83y2kqgl9a.fsf@gnu.org \
    --to=eliz@gnu.org \
    --cc=43700@debbugs.gnu.org \
    --cc=andrewjmoreton@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).