Subject: Re: bug#21428: 24.5; Crash of emacs on OS X, installed via homebrew cask

From: Eli Zaretskii <[email-masked]>
Date: Tue, 29 Sep 2015 12:52:43 +0300

> From: Rainer M Krug <[email-masked]>
> Cc: [email-masked],  [email-masked]
> Date: Tue, 29 Sep 2015 10:52:42 +0200
> 
> > In this same frame #2, what does this produce:
> >
> >   (gdb) p prop
> >   (gdb) xtype
> >
> > If the last command says "Lisp_String", follow it with "xstring"; if
> > it says "Lisp_Cons", follow it with "xcar" and "xsymbol".
> 
> ,----
> | (gdb) frame 2
> | #2  0x000000010008e4e6 in push_prefix_prop (it=0x7fff5fbf7f18, prop=4591275764) at xdisp.c:19809
> | 19809	  eassert (it->method == GET_FROM_BUFFER
> | (gdb) p prop
> | $16 = 4591275764
> | (gdb) xtype
> | Lisp_String
> | (gdb) xstring
> | $17 = (struct Lisp_String *) 0x111a94ef0
> | "* "
> | (gdb)
> `----

OK, for now just add GET_FROM_IMAGE to the assertion, like this:

  eassert (it->method == GET_FROM_BUFFER
	   || it->method == GET_FROM_DISPLAY_VECTOR
	   || it->method == GET_FROM_STRING
	   || it->method == GET_FROM_IMAGE);

recompile, and see if this gets you past the crashes in
push_prefix_prop when those inhibit-* variables are set to t.  If it
does, then let's see if running with those inhibit-* variables set to
t can trigger the crashes due to invalid face ID in
get_glyph_face_and_encoding.

Thanks.