Subject: bug#5973: Crash in get_next_display_element

From: Eli Zaretskii <[email-masked]>
Date: Mon, 19 Apr 2010 20:23:32 +0300

> From: David Reitter <[email-masked]>
> Date: Mon, 19 Apr 2010 12:08:18 -0400
> Cc: 
> 
> I just had a crash.  I can't pinpoint what triggered it.
> 
> Line xdisp.c:5946 is this in the build that I was running:
> 
> 	  it->face_id = FACE_FOR_CHAR (it->f, face, it->c, pos, it->string);
> 
> 
> FWIW, the build was done with
> CPP=cc -E -no-cpp-precomp
> CFLAGS=-g -O0 -Wdeclaration-after-statement -Wno-pointer-sign  
> 
> So one may possibly infer from the trace below that face_for_char() was NOT called by FACE_FOR_CHAR, and that the invalid pointer was somewhere in (FACE)->ascii_face->id  (see dispextern.h:1693).
> 
> Maybe FACE_FROM_ID returned a null pointer as it is documented to do if the face doesn't exist (?? frame? face got just deleted with frame??) and this bit of code doesn't check face.
> 
> But that's speculation - I don't know the display code very well.

Let's start by finding the immediate reason for the crash.  Please
show the contents of `face', the last argument to FACE_FOR_CHAR in the
line that crashed.

Also, what kind of signal was it that crashed the program?  (The
backtrace is in some form that I'm not familiar with, so maybe the
information is already present there.)

Thanks.