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

From: Andy Moreton <[email-masked]>
Date: Wed, 30 Nov 2011 15:01:55 +0000

On Wed 30 Nov 2011, Dan Nicolaescu wrote:

> 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.

The emacs build in this bug report is configured with
system-configuration-options is a variable defined in `C source code'.
Its value is "--with-gcc (4.6) --no-opt --cflags
-ID:/devel/emacs/libs/libXpm-3.5.8/include
-ID:/devel/emacs/libs/libXpm-3.5.8/src
-ID:/devel/emacs/libs/libpng-dev_1.4.3-1/include
-ID:/devel/emacs/libs/zlib-dev_1.2.5-2/include
-ID:/devel/emacs/libs/giflib-4.1.4-1/include
-ID:/devel/emacs/libs/jpeg-6b-4/include
-ID:/devel/emacs/libs/tiff-3.8.2-1/include
-ID:/devel/emacs/libs/gnutls-2.10.1/include --ldflags
-LD:/devel/emacs/libs/gnutls-2.10.1/lib"

This does not include "-fno-omit-frame-pointer", which is known to
important for MinGW GCC 4.6. Perhaps that is the real issue here ?

    AndyM