Developer forums (C::B DEVELOPMENT STRICTLY!) > Development

Ticket #108 App crashes when pressing F9 / compile+run

(1/2) > >>

oBFusCATed:
Can someone try to reproduce the crash from ticket #108? https://sourceforge.net/p/codeblocks/tickets/108/
I've not tried it on linux, but I suppose it is windows only.

ollydbg:

--- Quote from: oBFusCATed on December 10, 2014, 01:21:07 am ---Can someone try to reproduce the crash from ticket #108? https://sourceforge.net/p/codeblocks/tickets/108/
I've not tried it on linux, but I suppose it is windows only.

--- End quote ---
I has problems to access to SF (SF was blocked by my country from time to time >:( )
So, I wrote here, I just see the backtrack from GDB

--- Code: ---Program received signal SIGSEGV, Segmentation fault.
At F:\cb_sf_git\trunk\src\plugins\compilergcc\depslib\src\pathsplit.c:74

[debug]> bt 30
[debug]#0  0x64b51796 in path_split (path=0x0, f=0x22ecec) at F:\cb_sf_git\trunk\src\plugins\compilergcc\depslib\src\pathsplit.c:74
[debug]#1  0x64b514f7 in depsTimeStamp (path=0x0, time=0x22ef34) at F:\cb_sf_git\trunk\src\plugins\compilergcc\depslib\src\depslib.c:142
[debug]#2  0x64b50402 in DirectCommands::IsObjectOutdated (this=0x22f0c4, target=0x98f9028, pfd=..., errorStr=0x22ef9c) at F:\cb_sf_git\trunk\src\plugins\compilergcc\directcommands.cpp:1060
[debug]#3  0x64b4c931 in DirectCommands::GetTargetCompileCommands (this=0x22f0c4, target=0x98f9028, force=false) at F:\cb_sf_git\trunk\src\plugins\compilergcc\directcommands.cpp:488
[debug]#4  0x64b4c729 in DirectCommands::GetCompileCommands (this=0x22f0c4, target=0x98f9028, force=false) at F:\cb_sf_git\trunk\src\plugins\compilergcc\directcommands.cpp:450
[debug]#5  0x64b14ffd in CompilerGCC::BuildStateManagement (this=0x6da5a70) at F:\cb_sf_git\trunk\src\plugins\compilergcc\compilergcc.cpp:2395
[debug]#6  0x64b0f6d4 in CompilerGCC::DoRunQueue (this=0x6da5a70) at F:\cb_sf_git\trunk\src\plugins\compilergcc\compilergcc.cpp:1236
[debug]#7  0x64b16573 in CompilerGCC::DoBuild (this=0x6da5a70, target=<g_strEmpty+12> L"", clean=false, build=true, clearLog=true) at F:\cb_sf_git\trunk\src\plugins\compilergcc\compilergcc.cpp:2699
[debug]#8  0x64b165e9 in CompilerGCC::Build (this=0x6da5a70, target=<g_strEmpty+12> L"") at F:\cb_sf_git\trunk\src\plugins\compilergcc\compilergcc.cpp:2705
[debug]#9  0x64b16654 in CompilerGCC::Build (this=0x6da5a70, target=0x0) at F:\cb_sf_git\trunk\src\plugins\compilergcc\compilergcc.cpp:2710
[debug]#10 0x64b179b8 in CompilerGCC::OnCompile (this=0x6da5a70, event=...) at F:\cb_sf_git\trunk\src\plugins\compilergcc\compilergcc.cpp:2996
[debug]#11 0x64b0c216 in CompilerGCC::Dispatcher (this=0x6da5a70, event=...) at F:\cb_sf_git\trunk\src\plugins\compilergcc\compilergcc.cpp:639
[debug]#12 0x627015f1 in wxAppConsole::HandleEvent(wxEvtHandler*, void (wxEvtHandler::*)(wxEvent&), wxEvent&) const () from E:\code\wx-mingw-build-481-dw2\wxWidgets-2.8.12\lib\gcc_dll\wxmsw28u_gcc_custom.dll
[debug]#13 0x6276a07e in wxEvtHandler::ProcessEventIfMatches(wxEventTableEntryBase const&, wxEvtHandler*, wxEvent&) () from E:\code\wx-mingw-build-481-dw2\wxWidgets-2.8.12\lib\gcc_dll\wxmsw28u_gcc_custom.dll
[debug]#14 0x6276a14a in wxEventHashTable::HandleEvent(wxEvent&, wxEvtHandler*) () from E:\code\wx-mingw-build-481-dw2\wxWidgets-2.8.12\lib\gcc_dll\wxmsw28u_gcc_custom.dll
[debug]#15 0x6276a545 in wxEvtHandler::ProcessEvent(wxEvent&) () from E:\code\wx-mingw-build-481-dw2\wxWidgets-2.8.12\lib\gcc_dll\wxmsw28u_gcc_custom.dll
[debug]#16 0x6276a4d9 in wxEvtHandler::ProcessEvent(wxEvent&) () from E:\code\wx-mingw-build-481-dw2\wxWidgets-2.8.12\lib\gcc_dll\wxmsw28u_gcc_custom.dll
[debug]#17 0x6276a4d9 in wxEvtHandler::ProcessEvent(wxEvent&) () from E:\code\wx-mingw-build-481-dw2\wxWidgets-2.8.12\lib\gcc_dll\wxmsw28u_gcc_custom.dll
[debug]#18 0x6276a4d9 in wxEvtHandler::ProcessEvent(wxEvent&) () from E:\code\wx-mingw-build-481-dw2\wxWidgets-2.8.12\lib\gcc_dll\wxmsw28u_gcc_custom.dll
[debug]#19 0x6276a4d9 in wxEvtHandler::ProcessEvent(wxEvent&) () from E:\code\wx-mingw-build-481-dw2\wxWidgets-2.8.12\lib\gcc_dll\wxmsw28u_gcc_custom.dll
[debug]#20 0x6276a4d9 in wxEvtHandler::ProcessEvent(wxEvent&) () from E:\code\wx-mingw-build-481-dw2\wxWidgets-2.8.12\lib\gcc_dll\wxmsw28u_gcc_custom.dll
[debug]#21 0x6276a4d9 in wxEvtHandler::ProcessEvent(wxEvent&) () from E:\code\wx-mingw-build-481-dw2\wxWidgets-2.8.12\lib\gcc_dll\wxmsw28u_gcc_custom.dll
[debug]#22 0x6276a4d9 in wxEvtHandler::ProcessEvent(wxEvent&) () from E:\code\wx-mingw-build-481-dw2\wxWidgets-2.8.12\lib\gcc_dll\wxmsw28u_gcc_custom.dll
[debug]#23 0x6276a4d9 in wxEvtHandler::ProcessEvent(wxEvent&) () from E:\code\wx-mingw-build-481-dw2\wxWidgets-2.8.12\lib\gcc_dll\wxmsw28u_gcc_custom.dll
[debug]#24 0x6276a4d9 in wxEvtHandler::ProcessEvent(wxEvent&) () from E:\code\wx-mingw-build-481-dw2\wxWidgets-2.8.12\lib\gcc_dll\wxmsw28u_gcc_custom.dll
[debug]#25 0x6283f502 in wxWindowBase::TryParent(wxEvent&) () from E:\code\wx-mingw-build-481-dw2\wxWidgets-2.8.12\lib\gcc_dll\wxmsw28u_gcc_custom.dll
[debug]#26 0x62834bcf in wxToolBarBase::OnLeftClick(int, bool) () from E:\code\wx-mingw-build-481-dw2\wxWidgets-2.8.12\lib\gcc_dll\wxmsw28u_gcc_custom.dll
[debug]#27 0x627d5e0c in wxToolBar::MSWCommand(unsigned int, unsigned short) () from E:\code\wx-mingw-build-481-dw2\wxWidgets-2.8.12\lib\gcc_dll\wxmsw28u_gcc_custom.dll
[debug]#28 0x627b9d01 in wxFrame::HandleCommand(unsigned short, unsigned short, void*) () from E:\code\wx-mingw-build-481-dw2\wxWidgets-2.8.12\lib\gcc_dll\wxmsw28u_gcc_custom.dll
[debug]#29 0x627ba173 in wxFrame::MSWWindowProc(unsigned int, unsigned int, long) () from E:\code\wx-mingw-build-481-dw2\wxWidgets-2.8.12\lib\gcc_dll\wxmsw28u_gcc_custom.dll
[debug](More stack frames follow...)
[debug]>>>>>>cb_gdb:


--- End code ---

It is related to dependlib in the line:

--- Code: ---void path_split(const char *path, PATHSPLIT *f)
{
const char *p = path;
#ifdef DEPSLIB_WINDOWS
// support UNC filename in windows: ignore leading slashes
while ((*p == '/') || (*p == '\\')) //******************* crash here***********************
        ++p;
#endif
PATHPART *part;

f->count = 1;
f->part[0].ptr = path;

--- End code ---
Here, p is 0.

ollydbg:
It looks like the special folder "testabcă"

--- Code: ---source_file_absolute_native = L"D:\\temp\\testabc\003\001\\acb\\main.cpp"
--- End code ---
and then:

--- Code: ---bool DirectCommands::IsObjectOutdated(ProjectBuildTarget* target, const pfDetails& pfd, wxString* errorStr) const
{
    // If the source file does not exist, then do not compile.
    time_t timeSrc;
    depsTimeStamp(pfd.source_file_absolute_native.mb_str(), &timeSrc);
--- End code ---

But source_file_absolute_native.mb_str() failed and return a 0.

ollydbg:

--- Code: ---    wxString msg = wxT("abcă");
    const char *pppp = msg.mb_str();

--- End code ---
On WinXP
Under wx2.8.12, I get the pppp value is 0.
Under wx3.0, I get pppp is not zero, but *pppp is 0.

BlueHazzard:
Still a problem with wx3.0.2 on win 7 64bit

interesting that a conversion from "internal" utf16 to "external" utf16 fails, but

--- Code: ---wxString msg = wxT("abcă");
    const char *pppp = msg.ToUTF8();
--- End code ---
is working like a charm....

Anyway: codeblocks should not crash if a conversation fails, so there should be a null check, because wxString::mb_str() can fail:
http://docs.wxwidgets.org/trunk/classwx_string.html

--- Quote ---String in the current locale encoding implicitly or using c_str() or mb_str() methods. This is a potentially destructive operation as an empty string is returned if the conversion fails.
--- End quote ---

Navigation

[0] Message Index

[#] Next page

Go to full version