Re: [PATCH 1/4] Add sniffer for Cygwin x86_64 core dumps

Jon Turney
2020-08-24T17:02:15Z

On 24/08/2020 16:47, Simon Marchi wrote:
> On 2020-08-22 3:52 p.m., Jon Turney wrote:
>>
>> Hmmm. This often means the executable can't be started due to problems
>> loading DLLs.
>>
>> If you want to pursue this further, running under cygwin's strace (e.g.
>> 'strace dumper') might shed more light.
>
> Ahh, I downloaded the x86 version of the snapshot instead of the x86-64!

:)

> When using dumper.exe from the x86-64, it works. I that dumper.exe from the
> snapshot also runs much faster than the original dumper.exe, don't know if that's
> expected.

Yeah, I fixed some bogosity which was making it slow.

> I now get this:
>
> $ ./gdb -q --data-directory=data-directory ~/a.exe -ex "core ~/core.core"
> Reading symbols from /home/simark/a.exe...
> warning: core file may not match specified executable file.
> [New process 6408]
> [New process 6504]
> [New process 904]
> [New process 5068]
> [New process 4892]
> #0 0x00007ff92bba01b4 in ?? ()
> [Current thread is 1 (process 6408)]
> (gdb) bt
> #0 0x00007ff92bba01b4 in ?? ()
> Backtrace stopped: previous frame identical to this frame (corrupt stack?)
>
> Since I just copied my binary and core out of Cygwin, and the program was stopped somewhere
> under sleep(), it's perhaps expected that GDB has trouble unwinding from system libraries
> it doesn't have access to.

Yeah, I don't think unwinding is going to be very successful in that
case. Thanks for trying it out.

The "testing" I have been doing is mainly:

> $ cat dumper-test.c
>
> void fault()
> {
> // deref null pointer
> *(int *)0 = 1;
> }
>
> int main()
> {
> fault();
> }
>
> $ gcc -g -O0 dumper-test.c -o dumper-test.exe
>
> $ CYGWIN='error_start=dumper' ./dumper-test
>
> $ gdb dumper-test.exe dumper-test.exe.core
> [...]
> (gdb) bt
> #0 0x00007ffb4498fc20 in ntdll!KiUserExceptionDispatcher () from C:/WINDOWS/SYSTEM32/ntdll.dll
> #1 0x0000000100401089 in fault () at dumper-test.c:5
> #2 0x00000001004010a4 in main () at dumper-test.c:10