https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109712
Bug ID: 109712
Summary: Segmentation fault in linear_search_fdes
Product: gcc
Version: 13.1.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: carlosgalvezp at gmail dot com
Target Milestone: ---
Created attachment 54978
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=54978&action=edit
Reproducible example
Hi!
We are bumping our GCC installation from
6910cad55ffc330dc9767d2c8e0b66ccfa4134af to
07c52d1eec9671af92b7ce977b469f13a87887ad and are now getting a segmentation
fault when an exception is thrown, gdb points at "linear_search_fdes". Here's
the backtrace:
Thread 1 "a.out" received signal SIGSEGV, Segmentation fault.
linear_search_fdes (ob=0x7fffffffd690, this_fde=0x0, pc=0x404248 <foo()+50>) at
../../../gcc/libgcc/unwind-dw2-fde.c:969
969 ../../../gcc/libgcc/unwind-dw2-fde.c: No such file or directory.
(gdb) bt
#0 linear_search_fdes (ob=0x7fffffffd690, this_fde=0x0, pc=0x404248
<foo()+50>) at ../../../gcc/libgcc/unwind-dw2-fde.c:969
#1 0x00007ffff77c1e11 in find_fde_tail (dbase=18446744073709383432,
bases=0x7fffffffd8e8, hdr=0x4aaa34, pc=4211272) at
../../../gcc/libgcc/unwind-dw2-fde-dip.c:519
#2 _Unwind_Find_FDE (pc=<optimized out>, bases=bases@entry=0x7fffffffd8e8) at
../../../gcc/libgcc/unwind-dw2-fde-dip.c:573
#3 0x00007ffff77bd4aa in uw_frame_state_for (context=0x7fffffffd840,
fs=0x7fffffffd930) at ../../../gcc/libgcc/unwind-dw2.c:1005
#4 0x00007ffff77beefd in _Unwind_RaiseException (exc=0xcfc390) at
../../../gcc/libgcc/unwind.inc:104
#5 0x00007ffff7bced8a in __cxa_throw () from
/home/s0000069/src/src/bazel-src/external/gcc_trunk_x86_64_linux/usr/lib64/libstdc++.so.6
#6 0x0000000000404249 in foo () at ../main.cpp:8
#7 0x00000000004042a7 in main () at ../main.cpp:18
I attach a reproducible example that I have tested on Ubuntu 20.04, it will
download dependencies and build the example project. It expects a "GCC_BASE"
variable to be set pointing to the base GCC installation.
I have made the following observations, so I'm not sure the problem is GCC, but
I thought nevertheless to share it in case someone has a good intuition for
what could be happening. If this is not the right forum please let me know
where I should ask!
* The problem happens only when linking libcudart_static.a. If I think
libcudart.so it's fine. I have asked this question at the Nvidia forums as
well, awaiting reply.
* The problem happens only when throwing exceptions.
* The problem happens only when using the Gold linker.
* The problem happens only if I use the GCC trunk's libstdc++.so and
libgcc_s.so at runtime (via rpath). If I use the Ubuntu 20.04 system-installed
libraries, it runs fine.
Thank you for your time!