Author Topic: error alert message when using ThreadSearch Plugin  (Read 2099 times)

Offline ollydbg

  • Developer
  • Lives here!
  • *****
  • Posts: 5630
  • OpenCV and Robotics
    • Chinese OpenCV forum moderator
Re: error alert message when using ThreadSearch Plugin
« Reply #15 on: August 02, 2022, 04:52:42 am »
I find another way to catch the crash call stack with line information.

When crash happens (a message box pop up)

I use the gdb's attach command, such as:

Code
attach 1234

The 1234 is the pid of codeblocks.exe which can be found in the Task manager window.

Then using the command:

Code
thread apply all bt

I can get the call stack with line information:
Code
Thread 18 (Thread 2420.0xc20):
#0  0x00000000776e8fda in WaitMessage () from C:\Windows\system32\user32.dll
#1  0x00000000776f4864 in USER32!GetComboBoxInfo () from C:\Windows\system32\user32.dll
#2  0x00000000776f4b85 in USER32!GetComboBoxInfo () from C:\Windows\system32\user32.dll
#3  0x0000000077742e30 in USER32!SoftModalMessageBox () from C:\Windows\system32\user32.dll
#4  0x0000000077742125 in USER32!MessageBoxIndirectW () from C:\Windows\system32\user32.dll
#5  0x000000007774197b in USER32!MessageBoxTimeoutW () from C:\Windows\system32\user32.dll
#6  0x0000000077741872 in USER32!MessageBoxW () from C:\Windows\system32\user32.dll
#7  0x000007fee0c731a6 in DoShowAssertDialog(wxString const&) () from F:\code\cb\wxmsw317u_gcc_cb.dll
#8  0x000007fee0c735f0 in wxAppTraitsBase::ShowAssertDialog(wxString const&) () from F:\code\cb\wxmsw317u_gcc_cb.dll
#9  0x000007fee0c76d82 in ShowAssertDialog(wxString const&, int, wxString const&, wxString const&, wxString const&, wxAppTraits*) () from F:\code\cb\wxmsw317u_gcc_cb.dll
#10 0x000007fee0c77053 in wxAppConsoleBase::OnAssertFailure(wchar_t const*, int, wchar_t const*, wchar_t const*, wchar_t const*) () from F:\code\cb\wxmsw317u_gcc_cb.dll
#11 0x000007fee0c77249 in wxDefaultAssertHandler(wxString const&, int, wxString const&, wxString const&, wxString const&) () from F:\code\cb\wxmsw317u_gcc_cb.dll
#12 0x000007fee0c73e71 in wxOnAssert(char const*, int, char const*, char const*, char const*) () from F:\code\cb\wxmsw317u_gcc_cb.dll
#13 0x000007fee0d402c8 in wxUniChar::ToHi8bit(unsigned int) () from F:\code\cb\wxmsw317u_gcc_cb.dll
#14 0x000007fecb0ac194 in wxUniChar::To8bit (c=25104) at D:/code/wxWidgets-3.1.7/include/wx/unichar.h:200
#15 0x000007fecb0b1319 in wxUniChar::operator char (this=0xbf6ed68) at D:/code/wxWidgets-3.1.7/include/wx/unichar.h:126
#16 0x000007fecb067a8d in TextFileSearcherText::MatchLine (this=0x6e38e60, outMatchedPositions=0x58c028, originalLine=...) at D:\code\cbsource\cb_svn_git\src\plugins\contrib\ThreadSearch\TextFileSearcherText.cpp:57
#17 0x000007fecb066be3 in TextFileSearcher::FindInFile (this=0x6e38e60, filePath=..., foundLines=..., matchedPositions=std::vector of length 3, capacity 4 = {...}) at D:\code\cbsource\cb_svn_git\src\plugins\contrib\ThreadSearch\TextFileSearcher.cpp:147
#18 0x000007fecb087ed0 in ThreadSearchThread::FindInFile (this=0x58bee0, path=...) at D:\code\cbsource\cb_svn_git\src\plugins\contrib\ThreadSearch\ThreadSearchThread.cpp:284
#19 0x000007fecb087988 in ThreadSearchThread::Entry (this=0x58bee0) at D:\code\cbsource\cb_svn_git\src\plugins\contrib\ThreadSearch\ThreadSearchThread.cpp:219
#20 0x000007fee0d9b932 in wxThread::CallEntry() () from F:\code\cb\wxmsw317u_gcc_cb.dll
#21 0x000007fee0da6228 in wxThreadInternal::DoThreadStart(wxThread*) () from F:\code\cb\wxmsw317u_gcc_cb.dll
#22 0x000007fee0da6380 in wxThreadInternal::WinThreadStart(void*) () from F:\code\cb\wxmsw317u_gcc_cb.dll
#23 0x000007feff1b415f in srand () from C:\Windows\system32\msvcrt.dll
#24 0x000007feff1b6ebd in msvcrt!_ftime64_s () from C:\Windows\system32\msvcrt.dll
#25 0x00000000775c556d in KERNEL32!BaseThreadInitThunk () from C:\Windows\system32\kernel32.dll
#26 0x000000007782372d in ntdll!RtlUserThreadStart () from C:\Windows\SYSTEM32\ntdll.dll
#27 0x0000000000000000 in ?? ()
Backtrace stopped: previous frame inner to this frame (corrupt stack?)


--------------------------------------
I report the drmingw issue in their github site: ExcHndl.dll can't print the crash call stack under Windows 7 Issue #71 jrfonseca/drmingw, it looks like they still support Windows 7.

@Miguel Gimenez
I will check your fix, thanks.
If some piece of memory should be reused, turn them to variables (or const variables).
If some piece of operations should be reused, turn them to functions.
If they happened together, then turn them to classes.

Offline ollydbg

  • Developer
  • Lives here!
  • *****
  • Posts: 5630
  • OpenCV and Robotics
    • Chinese OpenCV forum moderator
Re: error alert message when using ThreadSearch Plugin
« Reply #16 on: August 03, 2022, 09:03:31 am »
I have just commited a possible fix for the issue described in the original post. Ollydbg, can you check if this works?

I just checked your fix in the SVN, and  I can confirm my reported wx warning dialog is gone, thanks!
If some piece of memory should be reused, turn them to variables (or const variables).
If some piece of operations should be reused, turn them to functions.
If they happened together, then turn them to classes.

Offline Miguel Gimenez

  • Developer
  • Lives here!
  • *****
  • Posts: 1112
Re: error alert message when using ThreadSearch Plugin
« Reply #17 on: August 03, 2022, 11:52:01 am »
Thank you for testing (I could not reproduce the issue).

I have just marked ticket 1275 as fixed.

Offline ollydbg

  • Developer
  • Lives here!
  • *****
  • Posts: 5630
  • OpenCV and Robotics
    • Chinese OpenCV forum moderator
Re: error alert message when using ThreadSearch Plugin
« Reply #18 on: August 13, 2022, 08:48:38 am »
Please investigate future in this. Line numbers would be AWSOME

Here are some good news

I just found and fixed the bug in DrMinGW, and now it works correctly if the bug got fixed. In my local build of DrMinGW(the git master version, currently 0.9.6), it can report the call-stack with line information from the ExcHndl.dll.

See this github issue, especially the lastest comments.

ExcHndl.dll can't print the crash call stack under Windows 7 Issue #71 jrfonseca/drmingw

The correct RPT could looks like:

Code
-------------------

Error occurred on Saturday, August 13, 2022 at 14:42:33.

codeblocks.exe caused a Breakpoint at location 000007FEC83B02D7 in module wxmsw317u_gcc_cb.dll.

AddrPC           Params
000007FEC83B02D7 000000000790B072 000000000790AFD0 000000000C40EC60  wxmsw317u_gcc_cb.dll!wxUniChar::ToHi8bit+0x67
000007FEC9E7C194 0000000000006210 0000000000000051 0000000000000132  ThreadSearch.dll!wxUniChar::To8bit+0x24  [D:/code/wxWidgets-3.1.7/include/wx/unichar.h @ 200]
000007FEC9E81319 000000000C40ED08 0000000000000051 0000000000000000  ThreadSearch.dll!wxUniChar::operator char+0x19  [D:/code/wxWidgets-3.1.7/include/wx/unichar.h @ 126]
000007FEC9E37A8D 0000000007789F70 000000000053BB48 000000000C40EE20  ThreadSearch.dll!TextFileSearcherText::MatchLine+0x119  [D:/code/cbsource/cb_svn_git/src/plugins/contrib/ThreadSearch/TextFileSearcherText.cpp @ 57]
000007FEC9E36BE3 0000000007789F70 000000000257D858 000000000053BB20  ThreadSearch.dll!TextFileSearcher::FindInFile+0x485  [D:/code/cbsource/cb_svn_git/src/plugins/contrib/ThreadSearch/TextFileSearcher.cpp @ 147]
000007FEC9E57ED0 000000000053BA00 000000000257D858 00000000078CD550  ThreadSearch.dll!ThreadSearchThread::FindInFile+0x8c  [D:/code/cbsource/cb_svn_git/src/plugins/contrib/ThreadSearch/ThreadSearchThread.cpp @ 284]
000007FEC9E57988 000000000053BA00 0000000000000000 0000000000000000  ThreadSearch.dll!ThreadSearchThread::Entry+0xaae  [D:/code/cbsource/cb_svn_git/src/plugins/contrib/ThreadSearch/ThreadSearchThread.cpp @ 219]
000007FEC840B932 000000000053BA00 0000000000000001 0000000000000000  wxmsw317u_gcc_cb.dll!wxThread::CallEntry+0x72
000007FEC8416228 000000000053BA00 000000000774CE80 0000000000000000  wxmsw317u_gcc_cb.dll!wxThreadInternal::DoThreadStart+0x5f8
000007FEC8416380 00000000079E2A10 0000000000000000 0000000000000000  wxmsw317u_gcc_cb.dll!wxThreadInternal::WinThreadStart+0x40
000007FEFE54415F 000007FEFE5D1EA0 00000000079E2A10 0000000000000000  msvcrt.dll!srand+0x93
000007FEFE546EBD 0000000000000000 0000000000000000 0000000000000000  msvcrt.dll!_ftime64_s+0x1dd
00000000772E556D 0000000000000000 0000000000000000 0000000000000000  kernel32.dll!BaseThreadInitThunk+0xd
000000007754385D 0000000000000000 0000000000000000 0000000000000000  ntdll.dll!RtlUserThreadStart+0x1d

000000013F650000-000000013F889000 codeblocks.exe 20.3.0.0
00000000774F0000-000000007768F000 ntdll.dll    6.1.7601.24524
...
...
...

Windows 6.1.7601
DrMingw 0.9.6
« Last Edit: August 13, 2022, 08:57:04 am by ollydbg »
If some piece of memory should be reused, turn them to variables (or const variables).
If some piece of operations should be reused, turn them to functions.
If they happened together, then turn them to classes.

Offline ollydbg

  • Developer
  • Lives here!
  • *****
  • Posts: 5630
  • OpenCV and Robotics
    • Chinese OpenCV forum moderator
Re: error alert message when using ThreadSearch Plugin
« Reply #19 on: September 16, 2022, 05:49:12 am »
Hi, the drmingw has the new release 0.9.7, and it fixes the reading call-stack issue I reported in this thread.

Release 0.9.7 jrfonseca/drmingw

So, my guess is we have to update to this release in our code::blocks svn repo?
If some piece of memory should be reused, turn them to variables (or const variables).
If some piece of operations should be reused, turn them to functions.
If they happened together, then turn them to classes.

Offline Miguel Gimenez

  • Developer
  • Lives here!
  • *****
  • Posts: 1112
Re: error alert message when using ThreadSearch Plugin
« Reply #20 on: September 16, 2022, 07:53:13 am »
New releases do not support Windows 7, because they are linked to Windows 8+ DLL.

Offline ollydbg

  • Developer
  • Lives here!
  • *****
  • Posts: 5630
  • OpenCV and Robotics
    • Chinese OpenCV forum moderator
Re: error alert message when using ThreadSearch Plugin
« Reply #21 on: September 16, 2022, 07:59:14 am »
New releases do not support Windows 7, because they are linked to Windows 8+ DLL.

I just replace the drmingw dll files in my win7's Code::Blocks folder, and I can start C::B without any issue.

I use the dependency walker to check the exchndl.dll, and it looks good. What is the Windows 8+ DLL?

EDIT

I just tested it, and it(exchndl.dll) can correctly catch the crash from a sample program and write the RPT file. So, it works on my Windows 7 64bit.
« Last Edit: September 16, 2022, 08:12:36 am by ollydbg »
If some piece of memory should be reused, turn them to variables (or const variables).
If some piece of operations should be reused, turn them to functions.
If they happened together, then turn them to classes.

Offline Miguel Gimenez

  • Developer
  • Lives here!
  • *****
  • Posts: 1112
Re: error alert message when using ThreadSearch Plugin
« Reply #22 on: September 16, 2022, 11:07:13 am »
Windows 8+ means Windows 8 and later.

The stock Windows 7 SP1 does not have the required DLL, but there is an optional KBxxxxx that installs it. I will check DrMinGW 0.9.7 on my system.

EDIT: I get problems with dependencies, the following files are not found:
Code
API-MS-WIN-CORE-WINRT-ERROR-L1-1-0.DLL
API-MS-WIN-CORE-WINRT-L1-1-0.DLL
API-MS-WIN-CORE-WINRT-ROBUFFER-L1-1-0.DLL
API-MS-WIN-CORE-WINRT-STRING-L1-1-0.DLL
API-MS-WIN-EVENTING-PROVIDER-L1-1-0.DLL
DCOMP.DLL
GPSVC.DLL
IESHIMS.DLL
« Last Edit: September 16, 2022, 11:46:43 am by Miguel Gimenez »

Offline ollydbg

  • Developer
  • Lives here!
  • *****
  • Posts: 5630
  • OpenCV and Robotics
    • Chinese OpenCV forum moderator
Re: error alert message when using ThreadSearch Plugin
« Reply #23 on: September 16, 2022, 01:39:36 pm »
Windows 8+ means Windows 8 and later.

The stock Windows 7 SP1 does not have the required DLL, but there is an optional KBxxxxx that installs it. I will check DrMinGW 0.9.7 on my system.

EDIT: I get problems with dependencies, the following files are not found:
Code
API-MS-WIN-CORE-WINRT-ERROR-L1-1-0.DLL
API-MS-WIN-CORE-WINRT-L1-1-0.DLL
API-MS-WIN-CORE-WINRT-ROBUFFER-L1-1-0.DLL
API-MS-WIN-CORE-WINRT-STRING-L1-1-0.DLL
API-MS-WIN-EVENTING-PROVIDER-L1-1-0.DLL
DCOMP.DLL
GPSVC.DLL
IESHIMS.DLL


Which dll are requiring those missing dlls?

I think the exchndl.dll and mgwhelp.dll files are built from the drmingw project.
While, the dbgcore.dll, dbghelp.dll and symsrv.dll are mainly from the windows sdk(windows debugging tools)

So, we only need to update the exchndl.dll and mgwhelp.dll files?

If some piece of memory should be reused, turn them to variables (or const variables).
If some piece of operations should be reused, turn them to functions.
If they happened together, then turn them to classes.

Offline Miguel Gimenez

  • Developer
  • Lives here!
  • *****
  • Posts: 1112
Re: error alert message when using ThreadSearch Plugin
« Reply #24 on: September 16, 2022, 02:07:00 pm »
Quote
Which dll are requiring those missing dlls?

exchndl.dll

We can recompile exchndl.dll for 0.9.7 using MinGW-w64 with win32 threading model, as recommended here.