OK, but the cbproject.cpp:483 thaw() is troublesome.
I found the cause of the assertion failures using gdb.
sdk\projectmanager.cpp:227
in
void ProjectManager::BuildTree(wxWindow* parent)
uses
which _forces_ a thaw without ever freezing anything.
gdb backtrace:
Continuing.
gdb: child_resume.SetThreadContext: thread 9912.0x24e0
ContinueDebugEvent (cpid=9912, ctid=9440, DBG_CONTINUE);
gdb: kernel event for pid=9912 tid=9440 code=OUTPUT_DEBUG_STRING_EVENT)
warning: 00:47:06: ../../src/msw/window.cpp(1337): assert "m_frozenness > 0" failed: Thaw() without matching Freeze()
...
Program received signal SIGTRAP, Trace/breakpoint trap.
0x7c901231 in ntdll!DbgUiConnectToDbg () from ntdll.dll
(gdb) bt
#0 0x7c901231 in ntdll!DbgUiConnectToDbg () from ntdll.dll
#1 0x10002479 in wxTrap () at ../../src/common/appbase.cpp:593
#2 0x1000289d in DoShowAssertDialog (msg=@0x22f380)
at ../../src/common/appbase.cpp:692
#3 0x100023fd in wxAppTraitsBase::ShowAssertDialog (this=0x1ba2b90,
msg=@0x22f380) at ../../src/common/appbase.cpp:550
#4 0x101714a8 in wxGUIAppTraitsBase::ShowAssertDialog (this=0x1ba2b90,
msg=@0x22f380) at ../../src/common/appcmn.cpp:530
#5 0x10002a7c in ShowAssertDialog (
szFile=0x1048a756 "../../src/msw/window.cpp", nLine=1337,
szCond=0x1048a975 "m_frozenness > 0",
szMsg=0x1048a954 "Thaw() without matching Freeze()", traits=0x1ba2b90)
at ../../src/common/appbase.cpp:846
#6 0x100021dd in wxAppConsole::OnAssert (this=0x558f908,
file=0x1048a756 "../../src/msw/window.cpp", line=1337,
cond=0x1048a975 "m_frozenness > 0",
msg=0x1048a954 "Thaw() without matching Freeze()")
at ../../src/common/appbase.cpp:461
#7 0x10002533 in wxOnAssert (szFile=0x1048a756 "../../src/msw/window.cpp",
nLine=1337, szCond=0x1048a975 "m_frozenness > 0",
szMsg=0x1048a954 "Thaw() without matching Freeze()")
at ../../src/common/appbase.cpp:649
#8 0x100024a8 in wxAssert (cond=0,
---Type <return> to continue, or q <return> to quit---
szFile=0x1048a756 "../../src/msw/window.cpp", nLine=1337,
szCond=0x1048a975 "m_frozenness > 0",
szMsg=0x1048a954 "Thaw() without matching Freeze()")
at ../../src/common/appbase.cpp:616
#9 0x10100dae in wxWindow::Thaw (this=0x56cceb8)
at ../../src/msw/window.cpp:1337
#10 0x6055ffe9 in ProjectManager::UnfreezeTree (this=0x56cc9c0, force=true)
at sdk/projectmanager.cpp:947
#11 0x60559be7 in ProjectManager::BuildTree (this=0x56cc9c0, parent=0x56ccbb0)
at sdk/projectmanager.cpp:249
#12 0x605594b0 in ProjectManager::InitPane (this=0x56cc9c0)
at sdk/projectmanager.cpp:222
#13 0x60558f73 in ProjectManager::ProjectManager (this=0x56cc9c0,
parent=0x570ea68) at sdk/projectmanager.cpp:195
#14 0x605586e8 in ProjectManager::Get (parent=0x570ea68)
at sdk/projectmanager.cpp:61
#15 0x6052bec2 in Manager::GetProjectManager (this=0x44effe8)
at sdk/manager.cpp:289
#16 0x00416096 in MainFrame::CreateMenubar (this=0x44cfcc0) at src/main.cpp:544
#17 0x00415707 in MainFrame::CreateIDE (this=0x44cfcc0) at src/main.cpp:468
#18 0x0041325b in MainFrame::MainFrame (this=0x44cfcc0, lang=@0x558f95c,
parent=0x0) at src/main.cpp:372
#19 0x004024a7 in CodeBlocksApp::InitFrame (this=0x558f908) at src/app.cpp:176
---Type <return> to continue, or q <return> to quit---
#20 0x0040346c in CodeBlocksApp::OnInit (this=0x558f908) at src/app.cpp:301
#21 0x004ad934 in wxAppConsole::CallOnInit (this=0x558f908)
at C:/Devel/wxWidgets-2.6.1/include/wx/app.h:87
#22 0x1003d7ab in wxEntryReal (argc=@0x22fe8c, argv=0x1b9efd8)
at ../../src/common/init.cpp:401
#23 0x100aa9f8 in wxEntry (argc=@0x22fe8c, argv=0x1b9efd8)
at ../../src/msw/main.cpp:247
#24 0x100aabbc in wxEntry (hInstance=0x400000, nCmdShow=10)
at ../../src/msw/main.cpp:299
#25 0x0040131a in WinMain (hInstance=0x400000, hPrevInstance=0x0,
lpCmdLine=0x251f07 "", nCmdShow=10) at src/app.cpp:297
#26 0x004aa12a in main () at C:/Devel/wxWidgets-2.6.1/include/wx/gdicmn.h:389
Note as well at line 951:
in
void ProjectManager::RebuildTree()
{
FreezeTree();
...
project->BuildTree(m_pTree, m_TreeRoot, m_TreeCategorize, m_TreeUseFolders, m_pFileGroups); /// THIS UNFREEZES THE TREE!!!
...
UnfreezeTree();
}
So that BuildTree() call interspersed will unfreeze the tree (m_pTree) frozen by the FreezeTree() so that UnfreezeTree() gives another gdb stacktrace like the one above (same assertion failure). (BuildTree contains that UnfreezeTree(true) call above...).
This should probably be sorted out...