News:

Accounts with zero posts and zero activity during the last months will be deleted periodically to fight SPAM!

Main Menu

Symbols-Browser - Search "ABC" (unknown) hangs CB

Started by BjoernP, July 24, 2006, 03:36:29 AM

Previous topic - Next topic

BjoernP

Hi all,
so back again, my second posting ever.  :D

Annoying buggy-thing seen for some time since:
When typing some unknown tag into the "Search" field of the symbol browser, CB hangs not responding, or seems so. System-Load is full, codeblocks.exe on top. Not so, if the doggy finds something in time. Maybe it's really still looking for it, then: limit depth of search-tree, have timeout, "Cancel Search" option (within some "Search running..." std-dialog)?
 
Anybody can repdoduce, working on this, any clue?

If needed, I will like to debug the beast the other day round and see what I can fix.


G'Night for now,
Björn

Rev 2778, WinXP, gcc-3.4.5
gcc-4.3-tdm (mingw), gcc-4.2.1-dw2 (mingw) << CB wx 2.8 (cvs WX_2_8_BRANCH)  << CB wx-2.9.x (cvs head) WinXP

Ceniza


BjoernP

The bug does not appear on every project, but does on the CB-Project itself. Feels like size matters here.

Added these lines into classbrowser.cpp +403:

    tree->SelectItem( parent );
    tree->EnsureVisible( parent );
    tree->SetIndent(0); // ? Thought this would scroll tree-window to the left, this won't do it.
    tree->Update();
    wxMilliSleep(50);

...just for the fun if it.

Search goes to the bottom, then jumps up an down the tree again, from wxCRC32 up to the TypeInfo templates in SqPlus and or wxBase64 and down again. No pattern here, but the search sticks to the bottom of the tree.
After some time CB freezes up - maybe system's recursion limit exceeded, but no messages.
Maybe something acout the TreeIds messed up, duplicates?

IMHO:Can this search not be done more efficiently?  Recursion is evil, man!   8)

I had actually expected something like a token-lookup into a map-like thing in the class-browser, holding all the parsed symbols and attached info.
So shouldn't we rather ask the builder of the tree (Parser::BuildTree) where to find the wanted gizmo instead of scanning the whole wxTree?

Just my 2 cent...

BjoernP
gcc-4.3-tdm (mingw), gcc-4.2.1-dw2 (mingw) << CB wx 2.8 (cvs WX_2_8_BRANCH)  << CB wx-2.9.x (cvs head) WinXP