Subject: bug#7190: Crash in menus on w32

From: Lennart Borgman <[email-masked]>
Date: Wed, 13 Oct 2010 16:43:55 +0200

On Wed, Oct 13, 2010 at 4:03 PM, grischka <[email-masked]> wrote:
> Lennart Borgman wrote:
>>
>> On Wed, Oct 13, 2010 at 1:02 PM, grischka <[email-masked]> wrote:
>>>>
>>>> I assume that their is either a logical problem with the code inside
>>>> Emacs or a bad assumption on how menu callbacks are actually run.
>>>
>>> Is there a difference between logical problem and bad assumption?
>>
>> Yes. The code could be correct under some bad assumptions regarding
>> the way the interface to the OS works.
>>
>> Is not that an important difference?
>
> Not if you want to fix the bug.

It looks like I am thinking nearly exactly the opposite.

For a simple bug it does not matter. For a complicated bug you can not
look at all possible places. That would take too long time. So putting
some structure on the different places and evaluating them makes much
sense to me.

>>>> By
>>>> adding DebPrint call we could perhaps see if some code where called in
>>>> an order we did not expect.
>>>
>>> Perhaps see the information that you already have?  For example
>>>  #7  0x011c4e4b in w32_free_submenu_strings (menu=0x205e3) at
>>> w32menu.c:1701
>>> is telling where is "some code", and
>>>  "Invalid Address specified to RtlFreeHeap( 00850000, 0088BDC8 )"
>>> is telling about "order we did not expect", as likely in:  Called
>>> twice for the same memory object.  If in doubt, try to prove that
>>> it can't happen.
>>
>> Yes, perhaps. But it could also be that memory objects are freed in an
>> order we did not expect.
>>
>
> Why should it matter in what order "Invalid Address" is passed to free?

Maybe I am misunderstanding, I do not know much about this part of the
code. Are you saying that you could not get this error from calls to
RtlFreeHeap coming in the wrong order? (That would perhaps help much
to know.)