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

Macro expansion infinite loop.

<< < (10/11) > >>

ollydbg:

--- Quote from: Huki on March 08, 2015, 08:48:18 am ---...
I suggest a patch like this:

--- Code: ---@@ -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

--- End code ---

--- End quote ---
Hi, Huki, after debug and reading the source code for a while, and found your patch is great!
I have committed to trunk with many description added as commit log. Thanks.

oBFusCATed:
Have rebuilt my work cb to the latest revision and it seems the bug has been fixed without the need to use the separate patches.

ollydbg:

--- Quote from: oBFusCATed on March 16, 2015, 08:55:58 pm ---Have rebuilt my work cb to the latest revision and it seems the bug has been fixed without the need to use the separate patches.

--- End quote ---
Yes, the broken token which cause infinite loop is skipped, this is a workaround to avoid the infinite loop, but does not follow the preprocessor' rules. My patches follow the rules, and won't expand the used macros .  ;)

MortenMacFly:
I am getting crashes like the following now:

--- Code: ---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

--- End code ---
...resolved:

--- Code: ---******************************
* 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

--- End code ---

I doubt it is related to the patch actually, probably just now it becomes visible.
Looks like another wxString thread instability...

ollydbg:

--- Quote from: MortenMacFly on March 18, 2015, 07:49:42 am ---...
I doubt it is related to the patch actually, probably just now it becomes visible.
Looks like another wxString thread instability...

--- End quote ---
You mean the crash happens when you apply my "try to expand every identifier like macro token" patch?

To solve the wxString thread issue, let switch to wx3.x. ;)

Navigation

[0] Message Index

[#] Next page

[*] Previous page

Go to full version