Subject: bug#10913: 24.0.94; Crash in redisplay code

From: Eli Zaretskii <[email-masked]>
Date: Wed, 29 Feb 2012 20:34:23 +0200

> From: Hannu Koivisto <[email-masked]>
> Date: Wed, 29 Feb 2012 18:12:35 +0200
> 
> Random crash.  I don't know how to reproduce this.  Backtrace included
> below.  Some string variable contents have been changed from what
> they really were.

This is an optimized build, right?  Otherwise, some variables shown
here make no sense at all.  E.g., this:

> #3  0x010873f3 in fast_looking_at (regexp=6, pos=676026, pos_byte=96427,
>     limit=89596416, limit_byte=285891, string=1) at search.c:588

`regexp' is a Lisp string, so it cannot have this value.  And `pos'
and `limit' are likewise garbled.

Anyway, if I'm to believe this backtrace (which I don't, since the
build is evidently optimized), the crash happened here:

	  switch (SWITCH_ENUM_CAST ((re_opcode_t) *pat++))
	    {
	    case on_failure_keep_string_jump:
	      assert (str == NULL);
	      goto continue_failure_jump;

	    case on_failure_jump_nastyloop:
	      assert ((re_opcode_t)pat[-2] == no_op);
	      PUSH_FAILURE_POINT (pat - 2, str);
	      /* Fallthrough */
	    ...
	    default:
	      abort (); <<<<<<<<<<<<<<<<<<<<<
	    }

which means what? that compile_pattern produced an invalid result?
I'd be surprised.

Sigh.