← Back to team overview

linuxdcpp-team team mailing list archive

[Bug 2039677] Re: Generated crashlogs are missing all trace information when DC++ is compiled with a gcc 8.5 and later based MinGW-w64

 

The error in libdwarf happens at
https://sourceforge.net/p/dcplusplus/code/ci/43196df8283bc3dfadc8eebd665c55804cef8954/tree/win32/CrashLogger.cpp#l292
being unable to find the address coming from the stack walk.

One problem is that the addr param in getDebugInfo function is a DWORD
so < 4GiB 64-bit addresses are getting truncated there. But this doesn't
tell why it fails on 32-bit as well.

https://sourceware.org/bugzilla/show_bug.cgi?id=19011 shows what's
changed in image base and ALSR defaults in the mingw-w64 build system to
comply with today's security standards. These changes applied at around
2020.08 and any build tried and the issue manifests with are after this
date.

Reverting the changes this bug entry describes using

'-Wl,--no-undefined,--nxcompat,--disable-reloc-section,--disable-
dynamicbase,--disable-high-entropy-va,--disable-auto-image-base,--image-
base=0x400000', '-time'

and specifying -gdwarf-4 (since our old libdwarf complaining/doesn't
know about DWARF5) the crash log is generated fine again.


** Bug watch added: Sourceware.org Bugzilla #19011
   https://sourceware.org/bugzilla/show_bug.cgi?id=19011

-- 
You received this bug notification because you are a member of
Dcplusplus-team, which is subscribed to DC++.
https://bugs.launchpad.net/bugs/2039677

Title:
  Generated crashlogs are missing all trace information when DC++ is
  compiled with a gcc 8.5 and later based MinGW-w64

Status in DC++:
  New

Bug description:
  The last known mingw-w64 version where it is working is <https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/8.1.0/>
  The first known mingw-w64 version where it is NOT working is <https://github.com/niXman/mingw-builds-binaries/releases/tag/8.5.0-rt_v10-rev0>
  Also tried some more mingw-w64 compilers based on gcc 9.x and 11.x with the same negative result.

  The documentation of
  <https://gcc.gnu.org/onlinedocs/gcc-8.1.0/gcc//Debugging-Options.html>
  <https://gcc.gnu.org/onlinedocs/gcc-8.5.0/gcc//Debugging-Options.html>
  is identical so no changes of defaults or no new options
  introduced/documented between these two versions.

  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..

To manage notifications about this bug go to:
https://bugs.launchpad.net/dcplusplus/+bug/2039677/+subscriptions



References