Hello!
I found another problem (This time Revision 2451). During syntax highlight modifications, when i change a keyword then program just hung, but funny thing is that not always... sometimes it works correctly. Under gdb i found only this:
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 114693 (LWP 8536)]
0xb75aa278 in wxSemaphore::Wait () from /usr/lib/libwx_baseu-2.6.so.0
(gdb) bt
#0 0xb75aa278 in wxSemaphore::Wait () from /usr/lib/libwx_baseu-2.6.so.0
#1 0xb75ab493 in wxThreadInternal::PthreadStart () from /usr/lib/libwx_baseu-2.6.so.0
#2 0xb75ab54b in wxPthreadStart () from /usr/lib/libwx_baseu-2.6.so.0
#3 0xb7ab7e04 in pthread_start_thread () from /lib/libpthread.so.0
#4 0xb7ab7f7d in pthread_start_thread_event () from /lib/libpthread.so.0
#5 0xb737248a in clone () from /lib/libc.so.6
I wont use debug version of wxWidgets because then usage of Code::Blocks is impossible because of number of Asserts Dialog at start.
I try to get some debug output under valgrind but somehow i can't do that, maybe this is related to other things i found. During project open phase:
==8550== Conditional jump or move depends on uninitialised value(s)
==8550== at 0x4111626: CompileTargetBase::SetOptionRelation(OptionsRelationType, OptionsRelation) (compiletargetbase.cpp:122)
==8550== by 0x41AD7C6: ProjectLoader::DoBuildTargetOptions(TiXmlElement*, ProjectBuildTarget*) (projectloader.cpp:490)
==8550== by 0x41AE68C: ProjectLoader::DoBuildTarget(TiXmlElement*) (projectloader.cpp:350)
==8550== by 0x41AE863: ProjectLoader::DoBuild(TiXmlElement*) (projectloader.cpp:328)
==8550== by 0x41B0090: ProjectLoader::Open(wxString const&) (projectloader.cpp:144)
==8550== by 0x40F2926: cbProject::Open() (cbproject.cpp:288)
==8550== by 0x40F47D5: cbProject::cbProject(wxString const&) (cbproject.cpp:84)
==8550== by 0x41BD845: ProjectManager::LoadProject(wxString const&, bool) (projectmanager.cpp:654)
==8550== by 0x8085640: MainFrame::DoOpenProject(wxString const&, bool) (main.cpp:1168)
==8550== by 0x80873E7: MainFrame::OpenGeneric(wxString const&, bool) (main.cpp:1130)
==8550== by 0x808803F: MainFrame::OnFileReopenProject(wxCommandEvent&) (main.cpp:1762)
==8550== by 0x4982477: wxAppConsole::HandleEvent(wxEvtHandler*, void (wxEvtHandler::*)(wxEvent&), wxEvent&) const (in /usr/lib/libwx_baseu-2.6.so.0.2.0)
As i see this is some uninitialized option in program. But what it is exactly? I have no idea.
After change the keywords (adding new one, or delete, but it also could be just change of highlight or editor option, i test only keyword change) i get this one. But as i write, it doesn't occure every time:
==8550== Invalid read of size 4
==8550== at 0x4872A02: wxGenericTreeCtrl::ScrollTo(wxTreeItemId const&) (in /usr/lib/libwx_gtk2u_core-2.6.so.0.2.0)
==8550== by 0x4879396: wxGenericTreeCtrl::EnsureVisible(wxTreeItemId const&) (in /usr/lib/libwx_gtk2u_core-2.6.so.0.2.0)
==8550== by 0x4903DBB: (within /usr/lib/libwx_gtk2u_core-2.6.so.0.2.0)
==8550== Address 0x77D2C20 is 16 bytes before a block of size 8 free'd
==8550== at 0x401C029: free (in /usr/lib/valgrind/x86-linux/vgpreload_memcheck.so)
==8550== by 0x50DE13F: g_free (in /usr/lib/libglib-2.0.so.0.800.6)
==8550== by 0x436E10E: SurfaceImpl::DrawTextTransparent(PRectangle, Font&, int, char const*, int, ColourAllocated) (PlatWX.cpp:359)
==8550== by 0x43943EE: Editor::DrawLine(Surface*, ViewStyle&, int, int, int, PRectangle, LineLayout*, int) (Editor.cxx:2557)
==8550== by 0x439CBB8: Editor::Paint(Surface*, PRectangle) (Editor.cxx:2892)
==8550== by 0x4372068: ScintillaWX::DoPaint(wxDC*, wxRect) (ScintillaWX.cpp:689)
==8550== by 0x437DEB7: wxScintilla::OnPaint(wxPaintEvent&) (wxscintilla.cpp:2918)
==8550== by 0x4982477: wxAppConsole::HandleEvent(wxEvtHandler*, void (wxEvtHandler::*)(wxEvent&), wxEvent&) const (in /usr/lib/libwx_baseu-2.6.so.0.2.0)
==8550==
==8550== Invalid read of size 1
==8550== at 0x48796CF: wxGenericTreeCtrl::DoSelectItem(wxTreeItemId const&, bool, bool) (in /usr/lib/libwx_gtk2u_core-2.6.so.0.2.0)
==8550== by 0x7FFFFFFE: ???
==8550== Address 0x77D2C2C is 4 bytes before a block of size 8 free'd
==8550== at 0x401C029: free (in /usr/lib/valgrind/x86-linux/vgpreload_memcheck.so)
==8550== by 0x50DE13F: g_free (in /usr/lib/libglib-2.0.so.0.800.6)
==8550== by 0x436E10E: SurfaceImpl::DrawTextTransparent(PRectangle, Font&, int, char const*, int, ColourAllocated) (PlatWX.cpp:359)
==8550== by 0x43943EE: Editor::DrawLine(Surface*, ViewStyle&, int, int, int, PRectangle, LineLayout*, int) (Editor.cxx:2557)
==8550== by 0x439CBB8: Editor::Paint(Surface*, PRectangle) (Editor.cxx:2892)
==8550== by 0x4372068: ScintillaWX::DoPaint(wxDC*, wxRect) (ScintillaWX.cpp:689)
==8550== by 0x437DEB7: wxScintilla::OnPaint(wxPaintEvent&) (wxscintilla.cpp:2918)
==8550== by 0x4982477: wxAppConsole::HandleEvent(wxEvtHandler*, void (wxEvtHandler::*)(wxEvent&), wxEvent&) const (in /usr/lib/libwx_baseu-2.6.so.0.2.0)
==8550==
==8550== Invalid write of size 1
==8550== at 0x48796D8: wxGenericTreeCtrl::DoSelectItem(wxTreeItemId const&, bool, bool) (in /usr/lib/libwx_gtk2u_core-2.6.so.0.2.0)
==8550== by 0x7FFFFFFE: ???
==8550== Address 0x77D2C2C is 4 bytes before a block of size 8 free'd
==8550== at 0x401C029: free (in /usr/lib/valgrind/x86-linux/vgpreload_memcheck.so)
==8550== by 0x50DE13F: g_free (in /usr/lib/libglib-2.0.so.0.800.6)
==8550== by 0x436E10E: SurfaceImpl::DrawTextTransparent(PRectangle, Font&, int, char const*, int, ColourAllocated) (PlatWX.cpp:359)
==8550== by 0x43943EE: Editor::DrawLine(Surface*, ViewStyle&, int, int, int, PRectangle, LineLayout*, int) (Editor.cxx:2557)
==8550== by 0x439CBB8: Editor::Paint(Surface*, PRectangle) (Editor.cxx:2892)
==8550== by 0x4372068: ScintillaWX::DoPaint(wxDC*, wxRect) (ScintillaWX.cpp:689)
==8550== by 0x437DEB7: wxScintilla::OnPaint(wxPaintEvent&) (wxscintilla.cpp:2918)
==8550== by 0x4982477: wxAppConsole::HandleEvent(wxEvtHandler*, void (wxEvtHandler::*)(wxEvent&), wxEvent&) const (in /usr/lib/libwx_baseu-2.6.so.0.2.0)
I have no idea if this is somehow related to the crash under gdb (under valgrind application doesn't crash) but this is what i get aften an hour (program works very slow under valgrind). After next change of keyword program crashed with (it tells much ;-):
==8550== Invalid read of size 4
==8550== at 0x4871A44: (within /usr/lib/libwx_gtk2u_core-2.6.so.0.2.0)
==8550== Address 0x77D2C04 is 20 bytes inside a block of size 24 free'd
==8550== at 0x401C029: free (in /usr/lib/valgrind/x86-linux/vgpreload_memcheck.so)
==8550== by 0x50DE13F: g_free (in /usr/lib/libglib-2.0.so.0.800.6)
Also i managed to get valgrind output from one crash at application close:
==23141== Invalid read of size 4
==23141== at 0x41BE02D: ProjectManager::CloseWorkspace() (projectmanager.cpp:1036)
==23141== by 0x8077476: MainFrame::DoCloseCurrentWorkspace() (main.cpp:1191)
==23141== by 0x808D633: MainFrame::OnApplicationClose(wxCloseEvent&) (main.cpp:1942)
==23141== by 0x4982477: wxAppConsole::HandleEvent(wxEvtHandler*, void (wxEvtHandler::*)(wxEvent&), wxEvent&) const (in usr/lib/libwx_baseu-2.6.so.0.2.0)
==23141== Address 0x54 is not stack'd, malloc'd or (recently) free'd
It looks like value was initialized to some value, but not the right one. Now i don't have any workspace defined. If it was created then it was done automatically, but as usual it doesn't happen every time.
As conclusion i must say that i am dissapointed. I lost about a week for Code::Blocks, installation problem under Gentoo (what is the purpose of svn information read during compilation i have no idea, if You want to embed a version information better do it server side, during commit), number of crashes was overwhelming, debugger don't work as i write a messege in other thread, use of Tools crash application, almost no documentation for program Features. There is also a KNOWN problem with TinyXML, read from unallocated memory (i described it in other topic), fix for that would add one line and change one line, and problem is left in the code... very strange. It is all much dissapointing from my point of view, and worse i know You do it for free, and try to create a decent IDE, but for me it is completly unusable.
I can try to debug application "little" more, but only if You will guide me what EXACTLY to do.
Also i would like to appologize for that i use Forum topic to report problems (additionally for that there are mangled many problems in each message).