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

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

bug#43700: 28.0.50; Crash creating a second frame


From: Andy Moreton
Subject: bug#43700: 28.0.50; Crash creating a second frame
Date: Fri, 2 Oct 2020 01:38:25 +0100
User-agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.12.0

On 01/10/2020 13:53, Eli Zaretskii wrote:
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?

Yes it does.

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:

This seems to be because I have "set output-radix 16" in ~/.gdbinit, so it displays the raw hex value. After "set output-radix 10" it displays the value as -1. Nothing untoward here.

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

MSYS2 is a rolling release distro, so the runtime, binutils and compiler are regularly updated. Currently that is gcc 10.2.0, and binutils 2.35, and msys2 runtime 3.1.7, all of which have been updated in recent weeks.

    AndyM







reply via email to

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