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!

Reply via email to