When launching the debug build (so no symbols stripped) : and loading the CB workspace and then wait a few seconds (no further investigation done)
-------------------
Error occurred on Tuesday, January 1, 2019 at 18:34:03.
codeblocks.exe caused an Access Violation at location 00000000097235AC in module codecompletion.dll Reading from location 0000000000000000.
AddrPC Params
00000000097235AC 000000001F2968F0 0000000021A764F0 000000001EED6B68 codecompletion.dll!KMP_Find [D:/Codeblocks/src/plugins/codecompletion/parser/tokenizer.cpp @ 1720]
1718: else
1719: {
> 1720: index += j - next[j];
1721: if (next[j] != -1)
1722: j = next[j];
0000000009723F32 000000001F2968F0 0000000021A764F0 0000000000000006 codecompletion.dll!GetFirstTokenPosition [D:/Codeblocks/src/plugins/codecompletion/parser/tokenizer.cpp @ 1934]
1932: for (;;)
1933: {
> 1934: const int ret = KMP_Find(p, key, keyLen);
1935: if (ret == -1)
1936: break;
00000000097239B6 000000001F2968F0 000000001F0F09F0 0000000021A764E0 codecompletion.dll!GetMacroExpandedText [D:/Codeblocks/src/plugins/codecompletion/parser/tokenizer.cpp @ 1849]
1847: {
1848: // find the first exist of formal arg from data to dataEnd
> 1849: const int pos = GetFirstTokenPosition(data, dataEnd - data, key, keyLen);
1850: if (pos != -1)
1851: {
00000000097232CF 000000001F2968F0 000000001F0F09F0 00000000FFFFFFFF codecompletion.dll!ReplaceMacroUsage [D:/Codeblocks/src/plugins/codecompletion/parser/tokenizer.cpp @ 1665]
1663:
1664: wxString macroExpandedText;
> 1665: if ( GetMacroExpandedText(tk, macroExpandedText) )
1666: return ReplaceBufferText(macroExpandedText, tk);
1667:
0000000009721B1F 000000001F2968F0 0000000009720F7E 000000001F2968F0 codecompletion.dll!CheckMacroUsageAndReplace [D:/Codeblocks/src/plugins/codecompletion/parser/tokenizer.cpp @ 1089]
1087: const Token* token = m_TokenTree->at(id);
1088: if (token)
> 1089: return ReplaceMacroUsage(token);// either object like macro or function like macro can be handled
1090: }
1091: return false;
0000000009721401 0000000021A765E0 000000001F2968F0 0000000021C27CA0 codecompletion.dll!DoGetToken [D:/Codeblocks/src/plugins/codecompletion/parser/tokenizer.cpp @ 966]
964: if (identifier)
965: {
> 966: bool replaced = CheckMacroUsageAndReplace();
967: // replaced is true means macro expansion happens, so we need to call Lex()
968: if (replaced)
00000000097211C6 0000000021A76730 000000001F2968F0 000000000EDC9040 codecompletion.dll!PeekToken [D:/Codeblocks/src/plugins/codecompletion/parser/tokenizer.cpp @ 904]
902: if (SkipUnwanted())
903: {
> 904: m_PeekToken = DoGetToken();
905: if (m_PeekToken == _T("(") && m_State^tsRawExpression)
906: ReadParentheses(m_PeekToken);
000000000970C4B8 000000001F2968E0 000000001F2968F0 0000000002000002 codecompletion.dll!DoParse [D:/Codeblocks/src/plugins/codecompletion/parser/parserthread.cpp @ 1016]
1014: {
1015: // check for operator()()
> 1016: wxString peek = m_Tokenizer.PeekToken();
1017: if ( !peek.IsEmpty()
1018: && peek.GetChar(0) != ParserConsts::opbracket_chr)
000000000970C0DD 000000001F2968E0 000000001F296B08 000000000EF41400 codecompletion.dll!DoParse [D:/Codeblocks/src/plugins/codecompletion/parser/parserthread.cpp @ 929]
927: {
928: m_Tokenizer.GetToken(); // "eat" {
> 929: DoParse(); // time for recursion ;)
930: }
931: }
000000000970AC75 000000001F2968E0 000000001F2968E0 0000000000000000 codecompletion.dll!Parse [D:/Codeblocks/src/plugins/codecompletion/parser/parserthread.cpp @ 533]
531: }
532:
> 533: DoParse();
534:
535: if (!m_Options.useBuffer) // Parsing a file
00000000097012D4 000000000EF41130 0000000021A77E00 0000000021A77E00 codecompletion.dll!Parse [D:/Codeblocks/src/plugins/codecompletion/parser/parser.cpp @ 345]
343: // run the parse recursively
344: AddParserThread(thread);
> 345: result = thread->Parse();
346: RemoveParserThread(thread);
347: delete thread;
000000000970467D 000000000EF41130 0000000021A77E00 000000001F298701 codecompletion.dll!ParseFile [D:/Codeblocks/src/plugins/codecompletion/parser/parser.cpp @ 670]
668:
669: // TODO (Morten#9#) locker ?
> 670: const bool ret = Parse(filename, !isGlobal, locked);
671:
672: return ret;
000000000970EC6A 000000001F2985C0 00000000097DB8A0 000000000208010A codecompletion.dll!HandleIncludes [D:/Codeblocks/src/plugins/codecompletion/parser/parserthread.cpp @ 1738]
1736:
1737: TRACE(_T("HandleIncludes() : Adding include file '%s'"), real_filename.wx_str());
> 1738: m_Parent->ParseFile(real_filename, isGlobal, true);
1739: }
1740: while (false);
000000000970B1A7 000000001F2985C0 000000001F2987E8 000000000EF41400 codecompletion.dll!DoParse [D:/Codeblocks/src/plugins/codecompletion/parser/parserthread.cpp @ 653]
651: // those could be: "#include" or "#warning" or "#xxx" and more
652: if (token == ParserConsts::kw_include)
> 653: HandleIncludes();
654: else // handle "#warning" or "#xxx" and more, just skip them
655: m_Tokenizer.SkipToEOL();
000000000970AC75 000000001F2985C0 000000001F2985C0 0000000000000000 codecompletion.dll!Parse [D:/Codeblocks/src/plugins/codecompletion/parser/parserthread.cpp @ 533]
531: }
532:
> 533: DoParse();
534:
535: if (!m_Options.useBuffer) // Parsing a file
00000000097012D4 000000000EF41130 0000000021A78E20 0000000021A78E00 codecompletion.dll!Parse [D:/Codeblocks/src/plugins/codecompletion/parser/parser.cpp @ 345]
343: // run the parse recursively
344: AddParserThread(thread);
> 345: result = thread->Parse();
346: RemoveParserThread(thread);
347: delete thread;
000000000970467D 000000000EF41130 0000000021A78E20 000000001F293101 codecompletion.dll!ParseFile [D:/Codeblocks/src/plugins/codecompletion/parser/parser.cpp @ 670]
668:
669: // TODO (Morten#9#) locker ?
> 670: const bool ret = Parse(filename, !isGlobal, locked);
671:
672: return ret;
000000000970EC6A 000000001F292F20 00000000097DB8A0 0000000002080130 codecompletion.dll!HandleIncludes [D:/Codeblocks/src/plugins/codecompletion/parser/parserthread.cpp @ 1738]
1736:
1737: TRACE(_T("HandleIncludes() : Adding include file '%s'"), real_filename.wx_str());
> 1738: m_Parent->ParseFile(real_filename, isGlobal, true);
1739: }
1740: while (false);
000000000970B1A7 000000001F292F20 000000001F293148 000000000EF41400 codecompletion.dll!DoParse [D:/Codeblocks/src/plugins/codecompletion/parser/parserthread.cpp @ 653]
651: // those could be: "#include" or "#warning" or "#xxx" and more
652: if (token == ParserConsts::kw_include)
> 653: HandleIncludes();
654: else // handle "#warning" or "#xxx" and more, just skip them
655: m_Tokenizer.SkipToEOL();
000000000970AC75 000000001F292F20 000000001F292F20 0000000000000000 codecompletion.dll!Parse [D:/Codeblocks/src/plugins/codecompletion/parser/parserthread.cpp @ 533]
531: }
532:
> 533: DoParse();
534:
535: if (!m_Options.useBuffer) // Parsing a file
00000000097012D4 000000000EF41130 0000000021A79E40 0000000021A79E00 codecompletion.dll!Parse [D:/Codeblocks/src/plugins/codecompletion/parser/parser.cpp @ 345]
343: // run the parse recursively
344: AddParserThread(thread);
> 345: result = thread->Parse();
346: RemoveParserThread(thread);
347: delete thread;
000000000970467D 000000000EF41130 0000000021A79E40 000000001F299B01 codecompletion.dll!ParseFile [D:/Codeblocks/src/plugins/codecompletion/parser/parser.cpp @ 670]
668:
669: // TODO (Morten#9#) locker ?
> 670: const bool ret = Parse(filename, !isGlobal, locked);
671:
672: return ret;
000000000970EC6A 000000001F299900 00000000097DB8A0 0000000002000002 codecompletion.dll!HandleIncludes [D:/Codeblocks/src/plugins/codecompletion/parser/parserthread.cpp @ 1738]
1736:
1737: TRACE(_T("HandleIncludes() : Adding include file '%s'"), real_filename.wx_str());
> 1738: m_Parent->ParseFile(real_filename, isGlobal, true);
1739: }
1740: while (false);
000000000970B1A7 000000001F299900 000000001F299B28 000000000EF41400 codecompletion.dll!DoParse [D:/Codeblocks/src/plugins/codecompletion/parser/parserthread.cpp @ 653]
651: // those could be: "#include" or "#warning" or "#xxx" and more
652: if (token == ParserConsts::kw_include)
> 653: HandleIncludes();
654: else // handle "#warning" or "#xxx" and more, just skip them
655: m_Tokenizer.SkipToEOL();
000000000970AC75 000000001F299900 000000001F299900 0000000000000000 codecompletion.dll!Parse [D:/Codeblocks/src/plugins/codecompletion/parser/parserthread.cpp @ 533]
531: }
532:
> 533: DoParse();
534:
535: if (!m_Options.useBuffer) // Parsing a file
00000000097012D4 000000000EF41130 0000000021A7AE60 0000000021A7AE00 codecompletion.dll!Parse [D:/Codeblocks/src/plugins/codecompletion/parser/parser.cpp @ 345]
343: // run the parse recursively
344: AddParserThread(thread);
> 345: result = thread->Parse();
346: RemoveParserThread(thread);
347: delete thread;
000000000970467D 000000000EF41130 0000000021A7AE60 000000001F292701 codecompletion.dll!ParseFile [D:/Codeblocks/src/plugins/codecompletion/parser/parser.cpp @ 670]
668:
669: // TODO (Morten#9#) locker ?
> 670: const bool ret = Parse(filename, !isGlobal, locked);
671:
672: return ret;
000000000970EC6A 000000001F292580 00000000097DB8A0 00000000020800F0 codecompletion.dll!HandleIncludes [D:/Codeblocks/src/plugins/codecompletion/parser/parserthread.cpp @ 1738]
1736:
1737: TRACE(_T("HandleIncludes() : Adding include file '%s'"), real_filename.wx_str());
> 1738: m_Parent->ParseFile(real_filename, isGlobal, true);
1739: }
1740: while (false);
000000000970B1A7 000000001F292580 000000001F2927A8 000000000EF41400 codecompletion.dll!DoParse [D:/Codeblocks/src/plugins/codecompletion/parser/parserthread.cpp @ 653]
651: // those could be: "#include" or "#warning" or "#xxx" and more
652: if (token == ParserConsts::kw_include)
> 653: HandleIncludes();
654: else // handle "#warning" or "#xxx" and more, just skip them
655: m_Tokenizer.SkipToEOL();
000000000970AC75 000000001F292580 000000001F292580 0000000000000000 codecompletion.dll!Parse [D:/Codeblocks/src/plugins/codecompletion/parser/parserthread.cpp @ 533]
531: }
532:
> 533: DoParse();
534:
535: if (!m_Options.useBuffer) // Parsing a file
00000000097012D4 000000000EF41130 0000000021A7BE80 0000000021A7BE00 codecompletion.dll!Parse [D:/Codeblocks/src/plugins/codecompletion/parser/parser.cpp @ 345]
343: // run the parse recursively
344: AddParserThread(thread);
> 345: result = thread->Parse();
346: RemoveParserThread(thread);
347: delete thread;
000000000970467D 000000000EF41130 0000000021A7BE80 000000001F294E01 codecompletion.dll!ParseFile [D:/Codeblocks/src/plugins/codecompletion/parser/parser.cpp @ 670]
668:
669: // TODO (Morten#9#) locker ?
> 670: const bool ret = Parse(filename, !isGlobal, locked);
671:
672: return ret;