Subject: Re: bug#10164: 24.0.91; Instant crash enabling linum-mode

From: Dan Nicolaescu <[email-masked]>
Date: Wed, 30 Nov 2011 07:52:40 -0500

Eli Zaretskii <[email-masked]> writes:

>> Date: Tue, 29 Nov 2011 19:05:20 -0700
>> From: Tim Crews <[email-masked]>
>> 
>>     Start Emacs with runemacs -Q --no-init-file
>>     C-x C-f foo.txt
>>     M-x linum-mode
>>     (Emacs doesn't crash yet)
>>     Type anything.  Emacs instantly crashes.
>
> Arrgh!  This is GCC 4.6.x "as-is" code reordering in action.  Emacs
> crashes here:
>
> 	      xassert (!row->enabled_p
> 		       || row->mode_line_p
> 		       || verify_row_hash (row));
>
> Evidently, it calls verify_row_hash before it tests row->mode_line_p.

Are you sure?  Without interprocedural analysis the compiler cannot know
that `verify_row_hash' does not alter row->enabled_p, so it cannot
change the evaluation order.
BTW, the argument for row_hash should be const.