hi,
i get regular crashes after startup if i change the focus from the splash screen to something else
C::B latest svn with wxWidgets 2.8.12
Linux Mint 15
backtrace from crash log:
<frame level="0"/>
<frame level="1" function="wxAppBase::SendIdleEvents(wxWindow*, wxIdleEvent&)" offset="0000007e"/>
<frame level="2" function="wxAppBase::ProcessIdle()" offset="00000074"/>
<frame level="3"/>
<frame level="4" function="g_main_context_dispatch" offset="00000135"/>
<frame level="5"/>
<frame level="6" function="g_main_loop_run" offset="0000006a"/>
<frame level="7" function="gtk_main" offset="000000a7"/>
<frame level="8" function="wxEventLoop::Run()" offset="00000048"/>
<frame level="9" function="wxAppBase::MainLoop()" offset="0000004c"/>
the interesting is: if i use a command line argument like --verbose or --debug-log the crash didn't happen
if i disable the compiler and scripted wizard plugins the crash didn't happen. This two plugins are the only one who print something to the console...
has someone a idea or a hint?
greetings
Does the crash happen if you start C::B under gdb?
no, i can't reproduce it with gdb, because i 'm somehow not capable of getting any debug output to a console. I mean if i start gdb there is nowhere the output i see normally when i start c::b from the terminal. I think the bug is somewhere in the output code from the plugins... (probably not thread safe?)
greetings
Why do you need to see the output?
There is no threading in the starup code (hope there isn't)!
Quote from: oBFusCATed on March 18, 2014, 09:12:32 PM
Why do you need to see the output?
if i didn't see the output the crash did not happen:
Quote from: BlueHazzard on March 18, 2014, 02:21:45 PM
the interesting is: if i use a command line argument like --verbose or --debug-log the crash didn't happen
if i use this arguments, i doesn't see any output in the terminal, and so the crash doesn't happen...
i have reported this issue some time ago, and i was not the only one... http://forums.next.codeblocks.org/index.php/topic,18580.msg128796.html#msg128796
greetings
Hm, but then why would gdb interfere with the output?
Does running C::B from terminal cause the same crash?
Hm, I've just tried it and I'm able to reproduce it... let's see if I can find what is causing it...
I guess this is the reason ::)
==25420== Invalid read of size 8
==25420== at 0x81AFDE1: wxFrame::OnInternalIdle() (frame.cpp:562)
==25420== by 0x81CD828: wxAppBase::SendIdleEvents(wxWindow*, wxIdleEvent&) (appcmn.cpp:471)
==25420== by 0x81CDD54: wxAppBase::ProcessIdle() (appcmn.cpp:443)
==25420== by 0x814C501: wxapp_idle_callback (app.cpp:213)
==25420== by 0x6AEC317: g_main_context_dispatch (in /usr/lib64/libglib-2.0.so.0.3800.2)
==25420== by 0x6AEC687: ??? (in /usr/lib64/libglib-2.0.so.0.3800.2)
==25420== by 0x6AECAE9: g_main_loop_run (in /usr/lib64/libglib-2.0.so.0.3800.2)
==25420== by 0x4F6F2E0: gtk_main (gtkmain.c:1257)
==25420== by 0x81606C7: wxEventLoop::Run() (evtloop.cpp:76)
==25420== by 0x81CDAFD: wxAppBase::MainLoop() (appcmn.cpp:312)
==25420== by 0x451091: CodeBlocksApp::OnRun() (app.cpp:818)
==25420== by 0x8836C84: wxEntry(int&, wchar_t**) (init.cpp:448)
==25420== Address 0x1491d438 is 712 bytes inside a block of size 888 free'd
==25420== at 0x4C2B0AC: operator delete(void*) (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==25420== by 0x508927: cbSplashScreen::~cbSplashScreen() (splashscreen.cpp:184)
==25420== by 0x81CDBEA: wxAppBase::DeletePendingObjects() (appcmn.cpp:423)
==25420== by 0x81CDD8B: wxAppBase::ProcessIdle() (appcmn.cpp:454)
==25420== by 0x814C501: wxapp_idle_callback (app.cpp:213)
==25420== by 0x6AEC317: g_main_context_dispatch (in /usr/lib64/libglib-2.0.so.0.3800.2)
==25420== by 0x6AEC687: ??? (in /usr/lib64/libglib-2.0.so.0.3800.2)
==25420== by 0x6AEC743: g_main_context_iteration (in /usr/lib64/libglib-2.0.so.0.3800.2)
==25420== by 0x4F6F4E0: gtk_main_iteration (gtkmain.c:1345)
==25420== by 0x8151BE4: wxClipboard::GetData(wxDataObject&) (clipbrd.cpp:599)
==25420== by 0x8E83435: EditorManager::OnAppActivated(CodeBlocksEvent&) (editormanager.cpp:1762)
==25420== by 0x8E84A5B: cbEventFunctor<EditorManager, CodeBlocksEvent>::Call(CodeBlocksEvent&) (in /home/obfuscated/projects/codeblocks/git/src/devel/libcodeblocks.so)
This patch seems to fix it, but I'm not really sure why.
Also I'm not sure what would be the problems caused by the removal of this code.
Can someone test this on windows, plus all the affected linux users test it, so they can verify the problem is gone?
Index: src/src/splashscreen.cpp
===================================================================
--- src/src/splashscreen.cpp (revision 9742)
+++ src/src/splashscreen.cpp (working copy)
@@ -103,9 +103,9 @@ void cbSplashScreen::OnTimer(wxTimerEvent &)
void cbSplashScreen::OnCloseWindow(wxCloseEvent &)
{
- m_timer.Stop();
- // Don't destroy it here. It creates a dangling pointer in app.cpp and crashes C::B
- Hide();
+// m_timer.Stop();
+// // Don't destroy it here. It creates a dangling pointer in app.cpp and crashes C::B
+// Hide();
}
void cbSplashScreen::OnChar(wxKeyEvent &)
I can now reproduce the bug with gdb. With your patch it doesn't crash within gdb any more, but if i start it from the terminal the crash still happen...
Linux Mint 15
What is this output? valgrind?
greetings