News:

As usual while waiting for the next release - don't forget to check the nightly builds in the forum.

Main Menu

About the Class browser crash....

Started by rickg22, June 30, 2007, 03:55:07 AM

Previous topic - Next topic

rickg22

#15
I just noticed something.


m_pTreeTop->Expand(root);
if(platform::gtk)
{
     // seems like the "expand" event comes too late in wxGTK,
     // so make it happen now
     ExpandItem(root);
}

Maybe this is the cause of the crash... ExpandItem seems to be called by the main thread in Windows, while in Linux is called by the worker thread. But I can't really be sure, there are other places where the code changes in the Windows platform.

thomas

The crash is reproducible under Windows XP here, but it does not occur when running in the debugger, so it will be next to impossible to find it (other than by sheer luck).
"We should forget about small efficiencies, say about 97% of the time: Premature quotation is the root of public humiliation."

Biplab

Quote from: thomas on July 02, 2007, 03:28:54 PM
The crash is reproducible under Windows XP here, but it does not occur when running in the debugger, so it will be next to impossible to find it (other than by sheer luck).

The crash can be reproduced in Debugger, too.

Please see the backtrace generated using GDB in the following thread.
Quotehttps://developer.berlios.de/bugs/?func=detailbug&bug_id=11433&group_id=5358
Be a part of the solution, not a part of the problem.

thomas

I found the reason:   You delete or Release() the pointer at some point, but you don't invalidate it.

Commenting out the code accessing m_pTreeTop around line 640 in classbrowserbuilderthread.cpp fixes the crash. Thus, the first logical conclusion is that the pointer is null.
However, adding a check for null-ness does not fix the crash. Ergo: the pointer in non-null and non-valid.

Find a delete without m_pTreeTop = 0, or a Release() without, and you have your bug.
"We should forget about small efficiencies, say about 97% of the time: Premature quotation is the root of public humiliation."

mandrav

Quote from: thomas on July 02, 2007, 04:58:22 PM
I found the reason:   You delete or Release() the pointer at some point, but you don't invalidate it.

Close but wrong. Anyway, the bug has been closed.
Be patient!
This bug will be fixed soon...

rickg22

Yay!  :D

So, how many bugs till RC3?