https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106674
Bug ID: 106674
Summary: Potential for symbol conflicts between libgcc_s and
libunwind
Product: gcc
Version: 12.1.1
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: libgcc
Assignee: unassigned at gcc dot gnu.org
Reporter: yshuiv7 at gmail dot com
Target Milestone: ---
libunwind and ligcc_s provides the same set of symbols, if an application
depends on both, then in very specific scenarios, conflicts can happen.
I hit the problem when running C++ code built by wineg++. When an exception is
thrown, libgcc_s' _Unwind_RaiseException somehow calls into libunwind's
_Unwind_GetCFA, and got garbage.
I don't know exactly how this happens.
Arch Linux does this to libunwind:
https://github.com/archlinux/svntogit-packages/blob/bd8ecd47e91dbb2cf77f82ca3a5a94ef1263eb31/trunk/PKGBUILD#L26
I don't know if that is to fix this problem in specific, but it does make the
problem go away.