Generated crashlogs are missing all trace information when DC++ is compiled with any post-2020 built MinGW-w64 toolchain
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
DC++ |
Fix Released
|
Undecided
|
Unassigned |
Bug Description
The last known mingw-w64 version where it is working is <https:/
The first known mingw-w64 version where it is NOT working is <https:/
Also tried some more mingw-w64 compilers based on gcc 9.x and 11.x with the same negative result.
The documentation of <https:/
I tried with different options such as -glevel -gdwarf32/64 or set to produce DWARF4 info with -gdwarf-4 (see the attached diff of the doc versions of the above gcc manual page between gcc 8.1 and 11.2) without success.
The size of the .pdb file generated using the single -g option keeps growing with every new gcc version from 6.x to 11.2 (gcc 11.2 produces ~6 times larger .pdb file than the size produced by 6.x if -g specified only).
We use a 10 year old libdwarf version, patched in a couple of places for our CrashLogger. Trying a libdwarf update may be useful if it is a file format problem. But maybe it is not a format change in the .pdb file at all but in the way how the call stack needs to be processed in Crashlogger, etc..
It doesn't work either in case of a long, deep callstacks or in a simple crash in main.cpp.
Test case:
Added
*((unsigned int*)0) = 0xDEAD;
to line 134 of main.cpp.
See the crashlogs attached that is generated with gcc 8.1 (expected result) and 8.5 (actual result).