Developer forums (C::B DEVELOPMENT STRICTLY!) > CodeCompletion redesign

CC makes C::B hang in ExpandBackticks

<< < (10/11) > >>

oBFusCATed:
Should I commit this last patch? What should be the commit message?

p.s. I tried it and it worked, but I've not tested it much.

Alpha:
Green light for commit.
compiler: fix macro replacement bug; fix wxExecute related bug; add sanity check

oBFusCATed:
Jens do you have bt for all threads? (for the original problem)

oBFusCATed:

--- Quote ---#0  0x00007ffff421d47f in wxPipeInputStream::CanRead() const () from /usr/lib64/libwx_baseu-2.8.so.0
#1  0x00007ffff488b4fb in wxGUIAppTraits::WaitForChild(wxExecuteData&) () from /usr/lib64/libwx_gtk2u_core-2.8.so.0
#2  0x00007ffff421de1e in wxExecute(wchar_t**, int, wxProcess*) () from /usr/lib64/libwx_baseu-2.8.so.0
#3  0x00007ffff421e863 in wxExecute(wxString const&, int, wxProcess*) () from /usr/lib64/libwx_baseu-2.8.so.0
#4  0x00007ffff421b950 in ?? () from /usr/lib64/libwx_baseu-2.8.so.0
#5  0x00007ffff3b823fb in ExpandBackticks (str=...) at /home/obfuscated/projects/codeblocks/git/src/sdk/globals.cpp:849
#6  0x00007ffff3b1534a in CompilerCommandGenerator::SetupCompilerOptions (this=0x26eae40, compiler=0x18c39d0, target=0x1ccd0a0) at /home/obfuscated/projects/codeblocks/git/src/sdk/compilercommandgenerator.cpp:936
#7  0x00007ffff3b0f554 in CompilerCommandGenerator::Init (this=0x26eae40, project=0x1bf2cc0) at /home/obfuscated/projects/codeblocks/git/src/sdk/compilercommandgenerator.cpp:164
#8  0x00007fffe4783483 in CompilerMINGW::GetCommandGenerator (this=0x18c39d0, project=0x1bf2cc0) at /home/obfuscated/projects/codeblocks/git/src/plugins/compilergcc/compilerMINGW.cpp:51
#9  0x00007fffd77d767e in NativeParser::AddCompilerDirs (this=0x17cbd90, project=0x1bf2cc0, parser=0x1cceb60) at /home/obfuscated/projects/codeblocks/git/src/plugins/codecompletion/nativeparser.cpp:1988
#10 0x00007fffd77d0717 in NativeParser::DoFullParsing (this=0x17cbd90, project=0x1bf2cc0, parser=0x1cceb60) at /home/obfuscated/projects/codeblocks/git/src/plugins/codecompletion/nativeparser.cpp:1044
#11 0x00007fffd77ce021 in NativeParser::CreateParser (this=0x17cbd90, project=0x1bf2cc0) at /home/obfuscated/projects/codeblocks/git/src/plugins/codecompletion/nativeparser.cpp:570
#12 0x00007fffd77da80f in NativeParser::OnEditorActivated (this=0x17cbd90, editor=0x24f0240) at /home/obfuscated/projects/codeblocks/git/src/plugins/codecompletion/nativeparser.cpp:2605
#13 0x00007fffd77ac5e0 in CodeCompletion::OnEditorActivatedTimer (this=0x17cbd10, event=...) at /home/obfuscated/projects/codeblocks/git/src/plugins/codecompletion/codecompletion.cpp:3640
#14 0x00007ffff4219e26 in wxEvtHandler::ProcessEventIfMatches(wxEventTableEntryBase const&, wxEvtHandler*, wxEvent&) () from /usr/lib64/libwx_baseu-2.8.so.0
#15 0x00007ffff4219fab in wxEventHashTable::HandleEvent(wxEvent&, wxEvtHandler*) () from /usr/lib64/libwx_baseu-2.8.so.0
#16 0x00007ffff421a2e4 in wxEvtHandler::ProcessEvent(wxEvent&) () from /usr/lib64/libwx_baseu-2.8.so.0
#17 0x00007ffff49873ee in wxTimerBase::Notify() () from /usr/lib64/libwx_gtk2u_core-2.8.so.0
#18 0x00007ffff48ae1cb in ?? () from /usr/lib64/libwx_gtk2u_core-2.8.so.0
#19 0x00007ffff59b85ab in ?? () from /usr/lib64/libglib-2.0.so.0
#20 0x00007ffff59b79e2 in g_main_context_dispatch () from /usr/lib64/libglib-2.0.so.0
#21 0x00007ffff59b7d28 in ?? () from /usr/lib64/libglib-2.0.so.0
#22 0x00007ffff59b7de4 in g_main_context_iteration () from /usr/lib64/libglib-2.0.so.0
#23 0x00007ffff78d8b31 in gtk_main_iteration () from /usr/lib64/libgtk-x11-2.0.so.0
#24 0x00007ffff4892ba5 in wxApp::Yield(bool) () from /usr/lib64/libwx_gtk2u_core-2.8.so.0
#25 0x00007ffff488b5c5 in wxGUIAppTraits::WaitForChild(wxExecuteData&) () from /usr/lib64/libwx_gtk2u_core-2.8.so.0
#26 0x00007ffff421de1e in wxExecute(wchar_t**, int, wxProcess*) () from /usr/lib64/libwx_baseu-2.8.so.0
#27 0x00007ffff421e863 in wxExecute(wxString const&, int, wxProcess*) () from /usr/lib64/libwx_baseu-2.8.so.0
#28 0x00007ffff421b950 in ?? () from /usr/lib64/libwx_baseu-2.8.so.0
#29 0x00007ffff3b823fb in ExpandBackticks (str=...) at /home/obfuscated/projects/codeblocks/git/src/sdk/globals.cpp:849
#30 0x00007ffff3b1568e in CompilerCommandGenerator::SetupLinkerOptions (this=0x2698bc0, compiler=0x18c39d0, target=0x1cd3ad0) at /home/obfuscated/projects/codeblocks/git/src/sdk/compilercommandgenerator.cpp:965
#31 0x00007ffff3b0f5c7 in CompilerCommandGenerator::Init (this=0x2698bc0, project=0x1bf2cc0) at /home/obfuscated/projects/codeblocks/git/src/sdk/compilercommandgenerator.cpp:165
#32 0x00007fffe4783483 in CompilerMINGW::GetCommandGenerator (this=0x18c39d0, project=0x1bf2cc0) at /home/obfuscated/projects/codeblocks/git/src/plugins/compilergcc/compilerMINGW.cpp:51
#33 0x00007fffd77d767e in NativeParser::AddCompilerDirs (this=0x17cbd90, project=0x1bf2cc0, parser=0x2696830) at /home/obfuscated/projects/codeblocks/git/src/plugins/codecompletion/nativeparser.cpp:1988
#34 0x00007fffd77d0717 in NativeParser::DoFullParsing (this=0x17cbd90, project=0x1bf2cc0, parser=0x2696830) at /home/obfuscated/projects/codeblocks/git/src/plugins/codecompletion/nativeparser.cpp:1044
#35 0x00007fffd77ce021 in NativeParser::CreateParser (this=0x17cbd90, project=0x1bf2cc0) at /home/obfuscated/projects/codeblocks/git/src/plugins/codecompletion/nativeparser.cpp:570
#36 0x00007fffd77a5a4c in CodeCompletion::OnProjectActivated (this=0x17cbd10, event=...) at /home/obfuscated/projects/codeblocks/git/src/plugins/codecompletion/codecompletion.cpp:2385
#37 0x00007fffd77c213b in cbEventFunctor<CodeCompletion, CodeBlocksEvent>::Call (this=0x1b7c650, event=...) at include/cbfunctor.h:35
#38 0x00007ffff3b9967d in Manager::ProcessEvent (this=0x89e730, event=...) at /home/obfuscated/projects/codeblocks/git/src/sdk/manager.cpp:179
#39 0x00007ffff3bb8b52 in PluginManager::NotifyPlugins (this=0x117d880, event=...) at /home/obfuscated/projects/codeblocks/git/src/sdk/pluginmanager.cpp:1445
#40 0x00007ffff3bdb224 in ProjectManager::SetProject (this=0xdd4120, project=0x1bf2cc0, refresh=true) at /home/obfuscated/projects/codeblocks/git/src/sdk/projectmanager.cpp:494
#41 0x00007ffff3bdde36 in ProjectManager::LoadProject (this=0xdd4120, filename=..., activateIt=true) at /home/obfuscated/projects/codeblocks/git/src/sdk/projectmanager.cpp:802
#42 0x000000000049bb09 in MainFrame::DoOpenProject (this=0x16b50b0, filename=..., addToHistory=true) at /home/obfuscated/projects/codeblocks/git/src/src/main.cpp:1826
#43 0x000000000049b781 in MainFrame::OpenGeneric (this=0x16b50b0, filename=..., addToHistory=true) at /home/obfuscated/projects/codeblocks/git/src/src/main.cpp:1775
#44 0x000000000049e343 in MainFrame::OnStartHereLink (this=0x16b50b0, event=...) at /home/obfuscated/projects/codeblocks/git/src/src/main.cpp:2145
#45 0x00007ffff4219e26 in wxEvtHandler::ProcessEventIfMatches(wxEventTableEntryBase const&, wxEvtHandler*, wxEvent&) () from /usr/lib64/libwx_baseu-2.8.so.0
#46 0x00007ffff4219fab in wxEventHashTable::HandleEvent(wxEvent&, wxEvtHandler*) () from /usr/lib64/libwx_baseu-2.8.so.0
#47 0x00007ffff421a2e4 in wxEvtHandler::ProcessEvent(wxEvent&) () from /usr/lib64/libwx_baseu-2.8.so.0
#48 0x00007ffff4219d92 in wxEvtHandler::ProcessPendingEvents() () from /usr/lib64/libwx_baseu-2.8.so.0
#49 0x00007ffff41972a9 in wxAppConsole::ProcessPendingEvents() () from /usr/lib64/libwx_baseu-2.8.so.0
#50 0x00007ffff4919c2a in wxAppBase::ProcessIdle() () from /usr/lib64/libwx_gtk2u_core-2.8.so.0
#51 0x00007ffff489208e in ?? () from /usr/lib64/libwx_gtk2u_core-2.8.so.0
#52 0x00007ffff59b79e2 in g_main_context_dispatch () from /usr/lib64/libglib-2.0.so.0
#53 0x00007ffff59b7d28 in ?? () from /usr/lib64/libglib-2.0.so.0
#54 0x00007ffff59b811a in g_main_loop_run () from /usr/lib64/libglib-2.0.so.0
#55 0x00007ffff78d8927 in gtk_main () from /usr/lib64/libgtk-x11-2.0.so.0
#56 0x00007ffff48a6528 in wxEventLoop::Run() () from /usr/lib64/libwx_gtk2u_core-2.8.so.0
#57 0x00007ffff4919a5b in wxAppBase::MainLoop() () from /usr/lib64/libwx_gtk2u_core-2.8.so.0
#58 0x0000000000455cec in CodeBlocksApp::OnRun (this=0x7acb80) at /home/obfuscated/projects/codeblocks/git/src/src/app.cpp:787
#59 0x00007ffff41c7cda in wxEntry(int&, wchar_t**) () from /usr/lib64/libwx_baseu-2.8.so.0
#60 0x00000000004532b9 in main (argc=8, argv=0x7fffffffdac8) at /home/obfuscated/projects/codeblocks/git/src/src/app.cpp:266

--- End quote ---

I doubt that wxExecute is re-entrant function.

This patch makes it 100% reproducible:

--- Code: ---diff --git a/src/sdk/globals.cpp b/src/sdk/globals.cpp
index f12fd76..38f672e 100644
--- a/src/sdk/globals.cpp
+++ b/src/sdk/globals.cpp
@@ -841,7 +841,7 @@ wxString ExpandBackticks(wxString& str) // backticks are written in-place to str
         }
         else
         {
-            Manager::Get()->GetLogManager()->DebugLog(F(_T("Caching result of `%s`"), cmd.wx_str()));
+//            Manager::Get()->GetLogManager()->DebugLog(F(_T("Caching result of `%s`"), cmd.wx_str()));
             wxArrayString output;
             if (platform::WindowsVersion() >= platform::winver_WindowsNT2000)
                 wxExecute(_T("cmd /c ") + cmd, output, wxEXEC_NODISABLE);
@@ -849,8 +849,8 @@ wxString ExpandBackticks(wxString& str) // backticks are written in-place to str
                 wxExecute(cmd, output, wxEXEC_NODISABLE);
             bt = GetStringFromArray(output, _T(" "), false);
             // add it in the cache
-            m_Backticks[cmd] = bt;
-            Manager::Get()->GetLogManager()->DebugLog(_T("Cached"));
+            //m_Backticks[cmd] = bt;
+//            Manager::Get()->GetLogManager()->DebugLog(_T("Cached"));
         }
         ret << bt << _T(' ');
         str = str.substr(0, start) + bt + str.substr(end + 1, wxString::npos);

--- End code ---

Jenna:

--- Quote from: oBFusCATed on January 09, 2013, 12:37:09 am ---Jens do you have bt for all threads? (for the original problem)

--- End quote ---
No just for the main thread.
I will try to get a bt for all tomorrow.

Navigation

[0] Message Index

[#] Next page

[*] Previous page

Go to full version