Subject: bug#18438: 24.4.50; assertion failed in bidi.c

From: Eli Zaretskii <[email-masked]>
Date: Fri, 12 Sep 2014 10:46:08 +0300

> Date: Fri, 12 Sep 2014 09:00:32 +0300
> From: Eli Zaretskii <[email-masked]>
> Cc: [email-masked]
> 
> > Date: Fri, 12 Sep 2014 13:55:23 +1200
> > From: [email-masked]
> > Cc: <[email-masked]>, <[email-masked]>
> > 
> > It finally happened again; backtrace attached
> 
> Thanks.
> 
> This is an entirely different place and condition:
> 
>   #1  0x00000001005b9a67 in die (msg=0x100a51d98 <DEFAULT_REHASH_SIZE+8416> "!it->bidi_p || (EQ (it->bidi_it.string.lstring, Qnil) && it->bidi_it.string.s == NULL)", file=0x100a4fcc0 <DEFAULT_REHASH_SIZE+8> "xdisp.c", line=8222)
>       at alloc.c:7160
>   No locals.
>   #2  0x00000001004435aa in next_element_from_buffer (it=0x2269b0) at xdisp.c:8220
> 	  success_p = true
> 
> And it again is a bogus assertion violation: as you see in frame #5,

Sorry, that was frame #6, not 5.

> 
>             string = {
>               lstring = 4306669618, 
>               s = 0x0, 
> 
> (4306669618 is nil), the condition of the assertion does in fact hold.

If you still have that session inside GDB, could you show the values
that are tested in the assertion in frame #2:

  eassert (!it->bidi_p
	   || (EQ (it->bidi_it.string.lstring, Qnil)
	       && it->bidi_it.string.s == NULL));