[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#334112: libc6: SIGSEGV in linear_search_fdes

On Sat, Oct 15, 2005 at 09:13:00AM -0700, John David Anglin wrote:
> Package: libc6
> Version: 2.3.5-6.0.1
> Severity: important
> DWARF2 exception support is broken due to bad EH data in the .eh_frame
> section of /lib/libc-2.3.5.so.
> After installation of libc6 version 2.3.5-6.0.1, a number of regressions
> were observed in the GCC 4.0 and 4.1 testsuites.  The following failure
> occurs in g++.dg/eh/forced1.C:

You're right that there is a missing terminator (there's a patch on
libc-alpha for that), but I would not expect it to cause trouble.  It's
not needed with sorted tables in .eh_frame_hdr, which IIRC all ports
ought to have (and it's not a new problem, either).  Very curious.

> (gdb) r
> Starting program: /home/dave/gcc-4.1/objdir/gcc/testsuite/forced1.xg
> Program received signal SIGSEGV, Segmentation fault.
> linear_search_fdes (ob=0xc004a1d4, this_fde=0x40acba54, pc=0x4099d663)
>     at unwind-dw2-fde.c:776
> 776     in unwind-dw2-fde.c
> (gdb) bt
> #0  linear_search_fdes (ob=0xc004a1d4, this_fde=0x40acba54, pc=0x4099d663)
>     at unwind-dw2-fde.c:776
> #1  0x401ba798 in _Unwind_IteratePhdrCallback (info=Variable "info" is not available.
> )
>     at ../../gcc/gcc/unwind-dw2-fde-glibc.c:386

Could you check for me why this failed:

  if (hdr->fde_count_enc != DW_EH_PE_omit
      && hdr->table_enc == (DW_EH_PE_datarel | DW_EH_PE_sdata4))

Do you have no search table, or is the encoding wrong?

Daniel Jacobowitz
CodeSourcery, LLC

Reply to: