I see infinite loop too. :(
Bug located. Patch here:
src/plugins/codecompletion/parser/tokenizer.cpp | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/src/plugins/codecompletion/parser/tokenizer.cpp b/src/plugins/codecompletion/parser/tokenizer.cpp
index 764bcbe..6202eda 100644
--- a/src/plugins/codecompletion/parser/tokenizer.cpp
+++ b/src/plugins/codecompletion/parser/tokenizer.cpp
@@ -1794,6 +1794,10 @@ bool Tokenizer::ReplaceBufferText(const wxString& target)
m_TokenIndex = m_BufferLen - m_FirstRemainingLength;
m_PeekAvailable = false;
SkipToEOL(false);
+ SkipToOneOfChars(_T(",;}"), true, false, false);
+ m_SavedTokenIndex = m_UndoTokenIndex = m_TokenIndex;
+ m_SavedLineNumber = m_UndoLineNumber = m_LineNumber;
+ m_SavedNestingLevel = m_UndoNestLevel = m_NestLevel;
return false;
}
else
It is a workaround patch and will cause parsing the Test class body wrongly, you will notice one extra member in the symbol tree :). But it works around a bug that macro replacement cause infinite loop when parsing. The fundamental solution is to ONLY do macro replacement in the Tokenizer level. (We currently do in both ParserThread and Tokenizer).
Can you test it?
I noticed another issue is that token numbers are becomes large because we save all the "macro usage tokens". I think they should not be saved in the tokentree, they are just like function call. Since we only restore the function declaration/definition, we don't save the function call, I think we also don't need to store the macro usage.
About macro usage check in the Tokenizer level, I have locally implement this feature, and it solve the bug Macro replacement in CC should remember the used macro definition (https://sourceforge.net/p/codeblocks/tickets/46/)(this is the similar issue as OBF's test case), but my local implementation contains many commits and massive code change in Tokenizer and Parserthread class. :(
OK, what about the test for all the other bugs/cases you've fixed?
There many tests file under src\plugins\codecompletion\testing, but running the cctest don't seem to improve much. ;)
--- C:/before-patch.txt Sun Feb 01 22:09:43 2015
+++ C:/after-patch.txt Sun Feb 01 22:00:48 2015
@@ -77,15 +77,15 @@
Total 1 tests, 1 PASS, 0 FAIL
--------------------------------------------------------
********************************************************
Testing in file: F:\cb_sf_git\trunk\src\plugins\codecompletion\testing\cc_mfc_expand_event_table.cpp
********************************************************
-*FAIL: mymiss mymissingfunc1
-*FAIL: mymiss mymissingfunc2
-*FAIL: mymiss mymissingfunc3
+-PASS: mymiss mymissingfunc1
+-PASS: mymiss mymissingfunc2
+-PASS: mymiss mymissingfunc3
--------------------------------------------------------
-Total 3 tests, 0 PASS, 3 FAIL
+Total 3 tests, 3 PASS, 0 FAIL
--------------------------------------------------------
********************************************************
Testing in file: F:\cb_sf_git\trunk\src\plugins\codecompletion\testing\cc_namespaces.cpp
********************************************************
-PASS: my_namespace.nested_namespace. variable
Look, it only fixes three Fails.
But please note that checking every token in the Tokenizer level is the only correct way to handle all the C-preprocessor directives and macro expansions, currently the higher level(Parserthread) class has many hacks to do this. If you look at the ParserThread.cpp, there are many code to check a token to see whether it is a macro usage or not. My patch serials just do all the macro expansion in the Tokenizer level, and it will make Parserthread's code much clean and simple.
...
I remember wx's macros are handled correctly with my patches. I will test it again.
I don't see some thing wrong with a simple wx(wx3.0) project created by wizard. So, I what is exact problem you have?
I did test with my patches on our codeblocks.cbp. I notice one issue, in the file sdk\configmanager.cpp
In the function:
TiXmlElement* ConfigManager::AssertPath(wxString& path)
{
Collapse(path);
wxString illegal(_T(" -:.\"\'$&()[]<>+#")); // our parser will skip to the end of this source file
It looks like the parser will skip to the end of the file, and comment out of the line don't expose the issue, so I will try to see what is the problem is. I think it is not hard to fix. (Maybe, this bug also exists on our trunk, I haven't tested it yet).
...
I notice one issue, in the file sdk\configmanager.cpp
In the function:
TiXmlElement* ConfigManager::AssertPath(wxString& path)
{
Collapse(path);
wxString illegal(_T(" -:.\"\'$&()[]<>+#")); // our parser will skip to the end of this source file
It looks like the parser will skip to the end of the file, and comment out of the line don't expose the issue, so I will try to see what is the problem is. I think it is not hard to fix. (Maybe, this bug also exists on our trunk, I haven't tested it yet).
Here is a test case for our cc which fails in my patch serials.
#define wxCONCAT_HELPER(text, line) text ## line
#define wxT(x) wxCONCAT_HELPER(L, x)
#define _T(x) wxT(x)
wxString illegal(_T(" -:.\"\'$&()[]<>+#"));
int aaa;
//a //aaa
EDIT:
I found the reason, it caused by those code when expansion macros:
// 5. handling stringizing operator #
for (int pos = expandedText.Find(_T("#"));
pos != wxNOT_FOUND;
pos = expandedText.Find(_T("#")))
{
In-fact we should skip the cases that # is inside a literal
...
Can someone confirm whether reverting commit 9933 (i.e., adding back the sanity check) solves the issue?
I did it in my pc, and it still hangs on the minimal project by OBF (http://cmpt.benbmp.org/codeblocks/nightlies/cc_marco_infinite2.tar.gz).
You're right, commit 9933 is not related with this issue: it only deals with macros like "#define AAA x+y+AAA".
I tried the obf's minimal project and I can already suggest a fix:
In ReplaceBufferText() we have:
if (m_RepeatReplaceCount >= s_MaxRepeatReplaceCount)
{
m_TokenIndex = m_BufferLen - m_FirstRemainingLength;
m_PeekAvailable = false;
SkipToEOL(false);
return false;
}
Simply change the return to "return true;" and it will fix the problem. It works by skipping (i..e, not parsing) the problem variable "int min;" in the Test struct. If we return false, we stop the current repeat replacement, but later in ParserThread() we will start a new replacement on the same token. :( That's why we get the infinite loop.
It's also a good idea to reset the UndoToken like you did in your original patch. But I am not sure if SkipToEOL() is really required. I suggest a patch like this:
@@ -1812,13 +1812,18 @@ bool Tokenizer::ReplaceBufferText(const wxString& target)
if (m_RepeatReplaceCount > 0)
{
if (m_RepeatReplaceCount >= s_MaxRepeatReplaceCount)
{
m_TokenIndex = m_BufferLen - m_FirstRemainingLength;
+
+ // Reset undo token
+ m_SavedTokenIndex = m_UndoTokenIndex = m_TokenIndex;
+ m_SavedLineNumber = m_UndoLineNumber = m_LineNumber;
+ m_SavedNestingLevel = m_UndoNestLevel = m_NestLevel;
+
m_PeekAvailable = false;
- SkipToEOL(false);
- return false;
+ return true; // NOTE: we have to skip the problem token by returning true.
}
else
++m_RepeatReplaceCount;
}
else // Set replace parsing state, and save first replace token index
Although my humble contribution is not directly related to the infinite loop, it may help the codecompletion a bit.
If I run cppcheck I get a bunch of remarks:
$ cppcheck --enable=all *.cpp |grep -v Checking |grep -v 'files checked'
[cclogger.h:49]: (warning) Member variable 'CCLogger::m_Parent' is not assigned a value in 'CCLogger::operator='.
[cclogger.h:49]: (warning) Member variable 'CCLogger::m_LogId' is not assigned a value in 'CCLogger::operator='.
[cclogger.h:49]: (warning) Member variable 'CCLogger::m_DebugLogId' is not assigned a value in 'CCLogger::operator='.
[cclogger.h:49]: (warning) Member variable 'CCLogger::m_AddTokenId' is not assigned a value in 'CCLogger::operator='.
[tokenizer.h:249]: (performance) Prefer prefix ++/-- operators for non-primitive types.
[expression.cpp:125]: (style) Expression is always false because 'else if' condition matches previous condition at line 104.
[parser.cpp:782] -> [parser.cpp:786]: (performance) Variable 'isParsed' is reassigned a value before the old one has been used.
[parser_base.cpp:180]: (warning) Member variable 'ParserBase::m_BrowserOptions' is not initialized in the constructor.
[parserthread.cpp:1883] -> [parserthread.cpp:1884]: (performance) Variable 'current' is reassigned a value before the old one has been used.
[parserthread.cpp:2819]: (performance) Possible inefficient checking for 'components' emptiness.
[parserthread.cpp:2822]: (performance) Possible inefficient checking for 'components' emptiness.
[parserthread.cpp:3500]: (performance) Possible inefficient checking for 'results' emptiness.
[searchtree.cpp:598]: (style) The scope of the variable 'nchild' can be reduced.
[searchtree.cpp:670]: (style) The scope of the variable 'n' can be reduced.
[searchtree.cpp:759]: (style) The scope of the variable 'matches' can be reduced.
[searchtree.cpp:989]: (style) The scope of the variable 'u' can be reduced.
[searchtree.cpp:77]: (performance) Possible inefficient checking for 'm_Children' emptiness.
[searchtree.cpp:403]: (performance) Prefer prefix ++/-- operators for non-primitive types.
[searchtree.cpp:411]: (performance) Prefer prefix ++/-- operators for non-primitive types.
[searchtree.cpp:460]: (performance) Prefer prefix ++/-- operators for non-primitive types.
[searchtree.cpp:471]: (performance) Prefer prefix ++/-- operators for non-primitive types.
[searchtree.cpp:484]: (performance) Prefer prefix ++/-- operators for non-primitive types.
[searchtree.cpp:510]: (performance) Prefer prefix ++/-- operators for non-primitive types.
[token.cpp:238]: (performance) Possible inefficient checking for 'files' emptiness.
[token.cpp:295]: (performance) Prefer prefix ++/-- operators for non-primitive types.
[tokentree.cpp:150]: (style) The scope of the variable 'result' can be reduced.
[tokentree.cpp:178]: (style) The scope of the variable 'result' can be reduced.
[tokentree.cpp:210]: (style) The scope of the variable 'result' can be reduced.
[tokentree.cpp:243]: (style) The scope of the variable 'result' can be reduced.
[cctreectrl.cpp:86]: (style) C-style pointer casting
[cctreectrl.cpp:166]: (style) C-style pointer casting
[cctreectrl.cpp:167]: (style) C-style pointer casting
[classbrowser.cpp:286]: (style) C-style pointer casting
[classbrowser.cpp:477]: (style) C-style pointer casting
[classbrowser.cpp:492]: (style) C-style pointer casting
[classbrowser.cpp:539]: (style) C-style pointer casting
[classbrowser.cpp:544]: (style) C-style pointer casting
[classbrowser.cpp:807]: (style) C-style pointer casting
[classbrowserbuilderthread.cpp:66]: (warning) Member variable 'ClassBrowserBuilderThread::m_idThreadEvent' is not initialized in the constructor.
[codecompletion.cpp:1964]: (performance) Possible inefficient checking for 'result' emptiness.
[codecompletion.cpp:1749]: (performance) Prefer prefix ++/-- operators for non-primitive types.
[coderefactoring.cpp:438]: (style) The scope of the variable 'pos' can be reduced.
[doxygen_parser.cpp:845]: (performance) Possible inefficient checking for 'tokensIdx' emptiness.
[doxygen_parser.cpp:964]: (performance) Possible inefficient checking for 'result' emptiness.
[nativeparser_base.cpp:1217] -> [nativeparser_base.cpp:1219]: (warning) Possible null pointer dereference: token - otherwise it is redundant to check it against null.
[nativeparser_base.cpp:1247] -> [nativeparser_base.cpp:1249]: (warning) Possible null pointer dereference: token - otherwise it is redundant to check it against null.
[nativeparser_base.cpp:869]: (style) Unused variable: autualTypeResult
[nativeparser_base.cpp:141]: (performance) Prefer prefix ++/-- operators for non-primitive types.
[nativeparser_base.cpp:167]: (performance) Prefer prefix ++/-- operators for non-primitive types.
IMHO, most of them are little obvious things can be corrected with little effort. This might save ollydbg and huki time for the harder things.
Hope, I do not upset somebody in hijacking the thread to some extent. Thought it might fit here and was not worth opening a new one.
Thanks.
Hello, blauzahn, thank you very much!
I fixed most of them in the trunk, see below:
[cclogger.h:49]: (warning) Member variable 'CCLogger::m_Parent' is not assigned a value in 'CCLogger::operator='.
[cclogger.h:49]: (warning) Member variable 'CCLogger::m_LogId' is not assigned a value in 'CCLogger::operator='.
[cclogger.h:49]: (warning) Member variable 'CCLogger::m_DebugLogId' is not assigned a value in 'CCLogger::operator='.
[cclogger.h:49]: (warning) Member variable 'CCLogger::m_AddTokenId' is not assigned a value in 'CCLogger::operator='.
Not sure what is a correct fix.
[tokenizer.h:249]: (performance) Prefer prefix ++/-- operators for non-primitive types.
No need to fix
[expression.cpp:125]: (style) Expression is always false because 'else if' condition matches previous condition at line 104.
fixed
[parser.cpp:782] -> [parser.cpp:786]: (performance) Variable 'isParsed' is reassigned a value before the old one has been used.
no need to fix
[parser_base.cpp:180]: (warning) Member variable 'ParserBase::m_BrowserOptions' is not initialized in the constructor.
fixed
[parserthread.cpp:1883] -> [parserthread.cpp:1884]: (performance) Variable 'current' is reassigned a value before the old one has been used.
fixed.
[parserthread.cpp:2819]: (performance) Possible inefficient checking for 'components' emptiness.
[parserthread.cpp:2822]: (performance) Possible inefficient checking for 'components' emptiness.
no need to fix
[parserthread.cpp:3500]: (performance) Possible inefficient checking for 'results' emptiness.
no need to fix
[searchtree.cpp:598]: (style) The scope of the variable 'nchild' can be reduced.
fixed
[searchtree.cpp:670]: (style) The scope of the variable 'n' can be reduced.
fixed, but maybe n get reassigned?
[searchtree.cpp:759]: (style) The scope of the variable 'matches' can be reduced.
fixed
[searchtree.cpp:989]: (style) The scope of the variable 'u' can be reduced.
fixed
[searchtree.cpp:77]: (performance) Possible inefficient checking for 'm_Children' emptiness.
no need to fix
[searchtree.cpp:403]: (performance) Prefer prefix ++/-- operators for non-primitive types.
[searchtree.cpp:411]: (performance) Prefer prefix ++/-- operators for non-primitive types.
[searchtree.cpp:460]: (performance) Prefer prefix ++/-- operators for non-primitive types.
[searchtree.cpp:471]: (performance) Prefer prefix ++/-- operators for non-primitive types.
[searchtree.cpp:484]: (performance) Prefer prefix ++/-- operators for non-primitive types.
[searchtree.cpp:510]: (performance) Prefer prefix ++/-- operators for non-primitive types.
[token.cpp:238]: (performance) Possible inefficient checking for 'files' emptiness.
[token.cpp:295]: (performance) Prefer prefix ++/-- operators for non-primitive types.
all no need to fix.
[tokentree.cpp:150]: (style) The scope of the variable 'result' can be reduced.
fixed
[tokentree.cpp:178]: (style) The scope of the variable 'result' can be reduced.
fixed
[tokentree.cpp:210]: (style) The scope of the variable 'result' can be reduced.
fixed
[tokentree.cpp:243]: (style) The scope of the variable 'result' can be reduced.
fixed
[cctreectrl.cpp:86]: (style) C-style pointer casting
[cctreectrl.cpp:166]: (style) C-style pointer casting
[cctreectrl.cpp:167]: (style) C-style pointer casting
[classbrowser.cpp:286]: (style) C-style pointer casting
[classbrowser.cpp:477]: (style) C-style pointer casting
[classbrowser.cpp:492]: (style) C-style pointer casting
[classbrowser.cpp:539]: (style) C-style pointer casting
[classbrowser.cpp:544]: (style) C-style pointer casting
[classbrowser.cpp:807]: (style) C-style pointer casting
Not currently yet. (No need to fix?)
[classbrowserbuilderthread.cpp:66]: (warning) Member variable 'ClassBrowserBuilderThread::m_idThreadEvent' is not initialized in the constructor.
fixed
[codecompletion.cpp:1964]: (performance) Possible inefficient checking for 'result' emptiness.
[codecompletion.cpp:1749]: (performance) Prefer prefix ++/-- operators for non-primitive types.
no need to fix
[coderefactoring.cpp:438]: (style) The scope of the variable 'pos' can be reduced.
fixed
[doxygen_parser.cpp:845]: (performance) Possible inefficient checking for 'tokensIdx' emptiness.
fixed by using empty() function.
[doxygen_parser.cpp:964]: (performance) Possible inefficient checking for 'result' emptiness.
no need to fix
[nativeparser_base.cpp:1217] -> [nativeparser_base.cpp:1219]: (warning) Possible null pointer dereference: token - otherwise it is redundant to check it against null.
This is alrady checked in if (token && MatchType(token->m_TokenKind, kindMask))
[nativeparser_base.cpp:1247] -> [nativeparser_base.cpp:1249]: (warning) Possible null pointer dereference: token - otherwise it is redundant to check it against null.
This is alrady checked in if (token && MatchType(token->m_TokenKind, kindMask))
[nativeparser_base.cpp:869]: (style) Unused variable: autualTypeResult
fixed
[nativeparser_base.cpp:141]: (performance) Prefer prefix ++/-- operators for non-primitive types.
[nativeparser_base.cpp:167]: (performance) Prefer prefix ++/-- operators for non-primitive types.
no need to fix
The "no need to fix" means I don't think it is necessary to fix them. such as "it++" and "++it" should be the same thing.
The others are that I don't know a correct fix. :)
...
In ReplaceBufferText() we have:
if (m_RepeatReplaceCount >= s_MaxRepeatReplaceCount)
{
m_TokenIndex = m_BufferLen - m_FirstRemainingLength;
m_PeekAvailable = false;
SkipToEOL(false);
return false;
}
Simply change the return to "return true;" and it will fix the problem. It works by skipping (i..e, not parsing) the problem variable "int min;" in the Test struct. If we return false, we stop the current repeat replacement, but later in ParserThread() we will start a new replacement on the same token. :( That's why we get the infinite loop.
...
Does return true cause other issue? I don't know. Maybe, we could add some test like
change this
void Tokenizer::GetReplacedToken(wxString& str)
{
// this indicates we are already in macro replacement mode
if (m_RepeatReplaceCount > 0)
{
to
void Tokenizer::GetReplacedToken(wxString& str)
{
// this indicates we are already in macro replacement mode
if (m_RepeatReplaceCount > 0 && m_RepeatReplaceCount < s_MaxRepeatReplaceCount )
{
But I haven't tested yet.
I am getting crashes like the following now:
C:\Devel\CodeBlocks\codeblocks.exe caused an Access Violation at location 6275ce54 in module C:\Devel\CodeBlocks\wxmsw28u_gcc_custom.dll Reading from location 00003a2e.
Registers:
eax=0028ed0c ebx=61a82e24 ecx=0028ed0c edx=00003a3a esi=62c92074 edi=0ae23720
eip=6275ce54 esp=0028ec20 ebp=0028ec78 iopl=0 nv up ei pl nz ac po nc
cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00010216
Call stack:
6275CE54 C:\Devel\CodeBlocks\wxmsw28u_gcc_custom.dll:6275CE54 _ZN12wxStringBaseaSERKS_
618034E1 C:\Devel\CodeBlocks\codeblocks.dll:618034E1 _ZN9CCManager13OnShowCallTipER15CodeBlocksEvent
61A82E7F C:\Devel\CodeBlocks\codeblocks.dll:61A82E7F _ZN14cbEventFunctorI9CCManager15CodeBlocksEventE4CallERS1_
6188CB4E C:\Devel\CodeBlocks\codeblocks.dll:6188CB4E _ZN7Manager12ProcessEventER15CodeBlocksEvent
61802827 C:\Devel\CodeBlocks\codeblocks.dll:61802827 _ZN9CCManager12OnEditorHookEP8cbEditorR16wxScintillaEvent
61AEF324 C:\Devel\CodeBlocks\codeblocks.dll:61AEF324 _ZNK11EditorHooks11HookFunctorI9CCManagerE4CallEP8cbEditorR16wxScintillaEvent
618431D5 C:\Devel\CodeBlocks\codeblocks.dll:618431D5 _ZN11EditorHooks9CallHooksEP8cbEditorR16wxScintillaEvent
617E1AB8 C:\Devel\CodeBlocks\codeblocks.dll:617E1AB8 _ZN8cbEditor16OnScintillaEventER16wxScintillaEvent
617E07F8 C:\Devel\CodeBlocks\codeblocks.dll:617E07F8 _ZN8cbEditor17OnEditorCharAddedER16wxScintillaEvent
62701262 C:\Devel\CodeBlocks\wxmsw28u_gcc_custom.dll:62701262 _ZNK12wxAppConsole11HandleEventEP12wxEvtHandlerMS0_FvR7wxEventES3_
62926CB8 C:\Devel\CodeBlocks\wxmsw28u_gcc_custom.dll:62926CB8 _ZN12wxWindowBase9TryParentER7wxEvent
61912F28 C:\Devel\CodeBlocks\codeblocks.dll:61912F28 _ZN11wxScintilla12NotifyParentEP14SCNotification
61915A91 C:\Devel\CodeBlocks\codeblocks.dll:61915A91 _ZN11ScintillaWX12NotifyParentE14SCNotification
619B8818 C:\Devel\CodeBlocks\codeblocks.dll:619B8818 _ZN6Editor10NotifyCharEi
619B621B C:\Devel\CodeBlocks\codeblocks.dll:619B621B _ZN6Editor10AddCharUTFEPKcjb
619D277A C:\Devel\CodeBlocks\codeblocks.dll:619D277A _ZN13ScintillaBase10AddCharUTFEPKcjb
61918645 C:\Devel\CodeBlocks\codeblocks.dll:61918645 _ZN11ScintillaWX9DoAddCharEi
61912059 C:\Devel\CodeBlocks\codeblocks.dll:61912059 _ZN11wxScintilla6OnCharER10wxKeyEvent
62701262 C:\Devel\CodeBlocks\wxmsw28u_gcc_custom.dll:62701262 _ZNK12wxAppConsole11HandleEventEP12wxEvtHandlerMS0_FvR7wxEventES3_
62701262 C:\Devel\CodeBlocks\wxmsw28u_gcc_custom.dll:62701262 _ZNK12wxAppConsole11HandleEventEP12wxEvtHandlerMS0_FvR7wxEventES3_
6280D82D C:\Devel\CodeBlocks\wxmsw28u_gcc_custom.dll:6280D82D _ZN8wxWindow10HandleCharEjlb
62811BB8 C:\Devel\CodeBlocks\wxmsw28u_gcc_custom.dll:62811BB8 _ZN8wxWindow13MSWWindowProcEjjl
628092B6 C:\Devel\CodeBlocks\wxmsw28u_gcc_custom.dll:628092B6 _Z9wxWndProcP6HWND__jjl@16
752C62FA C:\Windows\syswow64\USER32.dll:752C62FA gapfnScSendMessage
752C6D3A C:\Windows\syswow64\USER32.dll:752C6D3A GetThreadDesktop
752C77C4 C:\Windows\syswow64\USER32.dll:752C77C4 CharPrevW
752C788A C:\Windows\syswow64\USER32.dll:752C788A DispatchMessageW
752EC81F C:\Windows\syswow64\USER32.dll:752EC81F IsDialogMessageW
6280823D C:\Devel\CodeBlocks\wxmsw28u_gcc_custom.dll:6280823D _ZN8wxWindow17MSWProcessMessageEP6tagMSG
627E3AFD C:\Devel\CodeBlocks\wxmsw28u_gcc_custom.dll:627E3AFD _ZN11wxEventLoop17PreProcessMessageEP6tagMSG
627E386D C:\Devel\CodeBlocks\wxmsw28u_gcc_custom.dll:627E386D _ZN11wxEventLoop8DispatchEv
...resolved:
******************************
* Found (another) call stack *
******************************
C:\Devel\CodeBlocks\MinGW\bin\addr2line.exe -e C:\Devel\CodeBlocks\src\devel\wxmsw28u_gcc_custom.dll 6275CE54:
Error for: C:\Devel\CodeBlocks\MinGW\bin\addr2line.exe -e C:\Devel\CodeBlocks\src\devel\wxmsw28u_gcc_custom.dll 6275CE54
:C:\Devel\CodeBlocks\MinGW\bin\addr2line.exe: C:\Devel\CodeBlocks\src\devel\wxmsw28u_gcc_custom.dll: File truncated
----------------------------------------
C:\Devel\CodeBlocks\MinGW\bin\addr2line.exe -e C:\Devel\CodeBlocks\src\devel\codeblocks.dll 618034E1:
C:\Devel\CodeBlocks\codeblocks.dll[618034E1]:
C:/Devel/CodeBlocks/src/sdk/ccmanager.cpp:882
----------------------------------------
C:\Devel\CodeBlocks\MinGW\bin\addr2line.exe -e C:\Devel\CodeBlocks\src\devel\codeblocks.dll 61A82E7F:
C:\Devel\CodeBlocks\codeblocks.dll[61A82E7F]:
C:/Devel/CodeBlocks/src/include/cbfunctor.h:49
----------------------------------------
C:\Devel\CodeBlocks\MinGW\bin\addr2line.exe -e C:\Devel\CodeBlocks\src\devel\codeblocks.dll 6188CB4E:
C:\Devel\CodeBlocks\codeblocks.dll[6188CB4E]:
C:/Devel/CodeBlocks/src/sdk/manager.cpp:263
----------------------------------------
C:\Devel\CodeBlocks\MinGW\bin\addr2line.exe -e C:\Devel\CodeBlocks\src\devel\codeblocks.dll 61802827:
C:\Devel\CodeBlocks\codeblocks.dll[61802827]:
C:/Devel/CodeBlocks/src/sdk/ccmanager.cpp:722
----------------------------------------
C:\Devel\CodeBlocks\MinGW\bin\addr2line.exe -e C:\Devel\CodeBlocks\src\devel\codeblocks.dll 61AEF324:
C:\Devel\CodeBlocks\codeblocks.dll[61AEF324]:
C:\Devel\CodeBlocks\src/include/editor_hooks.h:61
----------------------------------------
C:\Devel\CodeBlocks\MinGW\bin\addr2line.exe -e C:\Devel\CodeBlocks\src\devel\codeblocks.dll 618431D5:
C:\Devel\CodeBlocks\codeblocks.dll[618431D5]:
C:/Devel/CodeBlocks/src/sdk/editor_hooks.cpp:122
----------------------------------------
C:\Devel\CodeBlocks\MinGW\bin\addr2line.exe -e C:\Devel\CodeBlocks\src\devel\codeblocks.dll 617E1AB8:
C:\Devel\CodeBlocks\codeblocks.dll[617E1AB8]:
C:/Devel/CodeBlocks/src/sdk/cbeditor.cpp:3440
----------------------------------------
C:\Devel\CodeBlocks\MinGW\bin\addr2line.exe -e C:\Devel\CodeBlocks\src\devel\codeblocks.dll 617E07F8:
C:\Devel\CodeBlocks\codeblocks.dll[617E07F8]:
C:/Devel/CodeBlocks/src/sdk/cbeditor.cpp:3172
----------------------------------------
C:\Devel\CodeBlocks\MinGW\bin\addr2line.exe -e C:\Devel\CodeBlocks\src\devel\wxmsw28u_gcc_custom.dll 62701262:
Error for: C:\Devel\CodeBlocks\MinGW\bin\addr2line.exe -e C:\Devel\CodeBlocks\src\devel\wxmsw28u_gcc_custom.dll 62701262
:C:\Devel\CodeBlocks\MinGW\bin\addr2line.exe: C:\Devel\CodeBlocks\src\devel\wxmsw28u_gcc_custom.dll: File truncated
----------------------------------------
C:\Devel\CodeBlocks\MinGW\bin\addr2line.exe -e C:\Devel\CodeBlocks\src\devel\wxmsw28u_gcc_custom.dll 62926CB8:
Error for: C:\Devel\CodeBlocks\MinGW\bin\addr2line.exe -e C:\Devel\CodeBlocks\src\devel\wxmsw28u_gcc_custom.dll 62926CB8
:C:\Devel\CodeBlocks\MinGW\bin\addr2line.exe: C:\Devel\CodeBlocks\src\devel\wxmsw28u_gcc_custom.dll: File truncated
----------------------------------------
C:\Devel\CodeBlocks\MinGW\bin\addr2line.exe -e C:\Devel\CodeBlocks\src\devel\codeblocks.dll 61912F28:
C:\Devel\CodeBlocks\codeblocks.dll[61912F28]:
C:/Devel/CodeBlocks/src/sdk/wxscintilla/src/wxscintilla.cpp:5750
----------------------------------------
C:\Devel\CodeBlocks\MinGW\bin\addr2line.exe -e C:\Devel\CodeBlocks\src\devel\codeblocks.dll 61915A91:
C:\Devel\CodeBlocks\codeblocks.dll[61915A91]:
C:/Devel/CodeBlocks/src/sdk/wxscintilla/src/ScintillaWX.cpp:534
----------------------------------------
C:\Devel\CodeBlocks\MinGW\bin\addr2line.exe -e C:\Devel\CodeBlocks\src\devel\codeblocks.dll 619B8818:
C:\Devel\CodeBlocks\codeblocks.dll[619B8818]:
C:/Devel/CodeBlocks/src/sdk/wxscintilla/src/scintilla/src/Editor.cxx:2240
----------------------------------------
C:\Devel\CodeBlocks\MinGW\bin\addr2line.exe -e C:\Devel\CodeBlocks\src\devel\codeblocks.dll 619B621B:
C:\Devel\CodeBlocks\codeblocks.dll[619B621B]:
C:/Devel/CodeBlocks/src/sdk/wxscintilla/src/scintilla/src/Editor.cxx:1898
----------------------------------------
C:\Devel\CodeBlocks\MinGW\bin\addr2line.exe -e C:\Devel\CodeBlocks\src\devel\codeblocks.dll 619D277A:
C:\Devel\CodeBlocks\codeblocks.dll[619D277A]:
C:/Devel/CodeBlocks/src/sdk/wxscintilla/src/scintilla/src/ScintillaBase.cxx:83
----------------------------------------
C:\Devel\CodeBlocks\MinGW\bin\addr2line.exe -e C:\Devel\CodeBlocks\src\devel\codeblocks.dll 61918645:
C:\Devel\CodeBlocks\codeblocks.dll[61918645]:
C:/Devel/CodeBlocks/src/sdk/wxscintilla/src/ScintillaWX.cpp:1197
----------------------------------------
C:\Devel\CodeBlocks\MinGW\bin\addr2line.exe -e C:\Devel\CodeBlocks\src\devel\codeblocks.dll 61912059:
C:\Devel\CodeBlocks\codeblocks.dll[61912059]:
C:/Devel/CodeBlocks/src/sdk/wxscintilla/src/wxscintilla.cpp:5462
----------------------------------------
C:\Devel\CodeBlocks\MinGW\bin\addr2line.exe -e C:\Devel\CodeBlocks\src\devel\wxmsw28u_gcc_custom.dll 62701262:
Error for: C:\Devel\CodeBlocks\MinGW\bin\addr2line.exe -e C:\Devel\CodeBlocks\src\devel\wxmsw28u_gcc_custom.dll 62701262
:C:\Devel\CodeBlocks\MinGW\bin\addr2line.exe: C:\Devel\CodeBlocks\src\devel\wxmsw28u_gcc_custom.dll: File truncated
I doubt it is related to the patch actually, probably just now it becomes visible.
Looks like another wxString thread instability...