emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: allocate_string_data memory corruption


From: David Kastrup
Subject: Re: allocate_string_data memory corruption
Date: Thu, 19 Jan 2006 00:48:12 +0100
User-agent: Gnus/5.11 (Gnus v5.11) Emacs/22.0.50 (gnu/linux)

Eli Zaretskii <address@hidden> writes:

>> From: Chong Yidong <address@hidden>
>> Date: Wed, 18 Jan 2006 11:57:02 -0500
>> 
>>     /* no crash here */
>>     if (data->string != s || data->nbytes != nbytes) abort ();
>> 
>>     check_sblock (current_sblock);
>> 
>>     /* crash occured here */
>>     if (data->string != s || data->nbytes != nbytes) abort ();
>>     ...
>>   }
>> 
>> 
>> In this function, data->string is set to s, and nbytes is set to
>> nbytes.  If check_sblock is a no-op, there should be no change.
>> However, we get an abort on the second debugging check:
>> 
>>   #0  abort () at emacs.c:461
>
> Are you in fact 110% sure the abort happens on the second debugging
> check?  Can you tell how did you verify this?  (The line number shown
> by GDB is not a reliable evidence.)
>
> Was this code compiled without optimizations?  If not, recompile with
> "-O0" and see if you get abort or crash in another place.

In particular (from DEBUG):

** When you are trying to analyze failed assertions, it will be
essential to compile Emacs either completely without optimizations or
at least (when using GCC) with the -fno-crossjumping option.  Failure
to do so may make the compiler recycle the same abort call for all
assertions in a given function, rendering the stack backtrace useless
for identifying the specific failed assertion.

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum




reply via email to

[Prev in Thread] Current Thread [Next in Thread]