Bug 165025 - GDB intermittently fails with gcj-generated (BC-ABI) .sos.
GDB intermittently fails with gcj-generated (BC-ABI) .sos.
Product: Red Hat Enterprise Linux 4
Classification: Red Hat
Component: gdb (Show other bugs)
powerpc Linux
medium Severity medium
: ---
: ---
Assigned To: Jan Kratochvil
Jay Turner
Depends On:
Blocks: 165039 221048
  Show dependency treegraph
Reported: 2005-08-03 13:47 EDT by Andrew Overholt
Modified: 2015-01-07 19:10 EST (History)
3 users (show)

See Also:
Fixed In Version: RHBA-2007-0811
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Last Closed: 2007-11-15 11:11:30 EST
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---

Attachments (Terms of Use)

  None (edit)
Description Andrew Overholt 2005-08-03 13:47:52 EDT
Description of problem:
GDB intermittently fails with gcj-generated (BC-ABI) .sos.

Version-Release number of selected component (if applicable):

How reproducible:
Always ... although no small test case unfortunately.

Steps to Reproduce:
1. start eclipse
2. gdb /usr/bin/java <pid>
3. thread apply all bt (or almost any command ... it happens quite frequently)
Actual results:
../../gdb-6.3/gdb/dwarf2-frame.c:454: internal-error: Unknown CFI 47 encountered.
A problem internal to GDB has been detected,
further debugging may prove unreliable.
Quit this debugging session? (y or n) y
../../gdb-6.3/gdb/dwarf2-frame.c:454: internal-error: Unknown CFI 47 encountered.
A problem internal to GDB has been detected,
further debugging may prove unreliable.
Create a core file of GDB? (y or n) n

Expected results:
No gdb failures.

Additional info:
Andrew Cagney has looked into this and knows what the problem is.
Comment 1 Andrew Cagney 2005-08-03 15:32:37 EDT
GDB needs to handle DW_CFA_GNU_negative_offset_extended which has been in the
java sources since ~2001:

1.2          (aph      03-Jun-01):       .byte     0x2f     /* 
DW_CFA_GNU_negative_offset_extended */

It's actually 100% reproducable, and it occures on rhel4.
Comment 2 Andrew Cagney 2005-08-03 15:34:50 EDT
This needs to be added to dwarf2-frame.c:

            case DW_CFA_GNU_negative_offset_extended:
              insn_ptr = read_uleb128 (insn_ptr, insn_end, &reg);
              insn_ptr = read_uleb128 (insn_ptr, insn_end, &offset);
              offset *= fs->data_align;
              dwarf2_frame_state_alloc_regs (&fs->regs, reg + 1);
              fs->regs.reg[reg].how = DWARF2_FRAME_REG_SAVED_OFFSET;
              fs->regs.reg[reg].loc.offset = -offset;

Comment 3 Jan Kratochvil 2006-12-31 01:08:01 EST
Patch committed as is to RawHide incl. an i386 testcase:
* Sat Dec 30 2006 Jan Kratochvil <jan.kratochvil@redhat.com> - 6.5-22
- Fix unwinding crash on older gcj(1) code (extended CFI support) (BZ 165025).
Comment 4 RHEL Product and Program Management 2007-05-09 07:15:57 EDT
This request was evaluated by Red Hat Product Management for inclusion in a Red
Hat Enterprise Linux maintenance release.  Product Management has requested
further review of this request by Red Hat Engineering, for potential
inclusion in a Red Hat Enterprise Linux Update release for currently deployed
products.  This request is not yet committed for inclusion in an Update
Comment 7 Andrew Cagney 2007-07-17 14:24:32 EDT
Test case included.  Fixes crash.
Comment 13 errata-xmlrpc 2007-11-15 11:11:30 EST
An advisory has been issued which should help the problem
described in this bug report. This report is therefore being
closed with a resolution of ERRATA. For more information
on the solution and/or where to find the updated files,
please follow the link below. You may reopen this bug report
if the solution does not work for you.


Note You need to log in before you can comment on or make changes to this bug.