http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60459

            Bug ID: 60459
           Summary: Crash seen in _Unwind_VRS_Pop() for ARM platform
           Product: gcc
           Version: 4.2.1
            Status: UNCONFIRMED
          Severity: blocker
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: raghupv30 at gmail dot com

Hi,

With ARM target platform, crashes in _Unwind_VRS_Pop() during exception
propagation.
Below is the stack trace:

Program terminated with signal 11, Segmentation fault.
#0 _Unwind_VRS_Pop (context=0x1140bf4, regclass=<optimized out>,
discriminator=<optimized out>, representation=_UVRSD_UINT32) at
/home/ben/Katalix/Toolchain/drx780-build/stb_toolchain_2.1/toolchain_build_arm_nofpu/gcc-4.2.1/gcc/config/arm/unwind-arm.c:269
#0 _Unwind_VRS_Pop (context=0x1140bf4, regclass=<optimized out>,
discriminator=<optimized out>, representation=_UVRSD_UINT32) at
/home/ben/Katalix/Toolchain/drx780-build/stb_toolchain_2.1/toolchain_build_arm_nofpu/gcc-4.2.1/gcc/config/arm/unwind-arm.c:269
ptr = 0x4
mask = 16384
i = 14
#1 0x1a5ac6f8 in __gnu_unwind_execute (context=0x1140bc0, uws=0x1140b80) at
/home/ben/Katalix/Toolchain/drx780-build/stb_toolchain_2.1/toolchain_build_arm_nofpu/gcc-4.2.1/gcc/config/arm/pr-support.c:157
op = 16384
set_pc = 0
reg = 1
#2 0x1a5abdf0 in __gnu_unwind_pr_common (state=_US_UNWIND_FRAME_STARTING,
ucbp=0x11416f8, context=0x1140bc0, id=1) at
/home/ben/Katalix/Toolchain/drx780-build/stb_toolchain_2.1/toolchain_build_arm_nofpu/gcc-4.2.1/gcc/config/arm/unwind-arm.c:974
uws =
{data = 0, next = 0xb14aa8, bytes_left = 0 '\000', words_left = 0 '\000'}

data = <optimized out>
offset = 8
len = 18091248
rtti_count = 18091248
phase2_call_unexpected_after_unwind = 9
in_range = <optimized out>
forced_unwind = 18093816
#3 0x1b09d6dc in ?? ()
No symbol table info available.
#4 0x1b09d6dc in ?? ()
No symbol table info available.


Analysing the core dump:


(gdb) x/24i _Unwind_VRS_Pop
   0x1a5ac34c <_Unwind_VRS_Pop>:        push    {r4, r5, r6, r7, r8, r10, lr}
   0x1a5ac350 <_Unwind_VRS_Pop+4>:      mov     r7, r0
   0x1a5ac354 <_Unwind_VRS_Pop+8>:      sub     sp, sp, #140    ; 0x8c
   0x1a5ac358 <_Unwind_VRS_Pop+12>:     mov     r5, r3
   0x1a5ac35c <_Unwind_VRS_Pop+16>:     cmp     r1, #4
   0x1a5ac360 <_Unwind_VRS_Pop+20>:     addls   pc, pc, r1, lsl #2
   0x1a5ac364 <_Unwind_VRS_Pop+24>:     b       0x1a5ac468
<_Unwind_VRS_Pop+284>
   0x1a5ac368 <_Unwind_VRS_Pop+28>:     b       0x1a5ac384 <_Unwind_VRS_Pop+56>
   0x1a5ac36c <_Unwind_VRS_Pop+32>:     b       0x1a5ac3cc
<_Unwind_VRS_Pop+128>
   0x1a5ac370 <_Unwind_VRS_Pop+36>:     b       0x1a5ac37c <_Unwind_VRS_Pop+48>
   0x1a5ac374 <_Unwind_VRS_Pop+40>:     b       0x1a5ac37c <_Unwind_VRS_Pop+48>
   0x1a5ac378 <_Unwind_VRS_Pop+44>:     b       0x1a5ac37c <_Unwind_VRS_Pop+48>
   0x1a5ac37c <_Unwind_VRS_Pop+48>:     mov     r0, #1
   0x1a5ac380 <_Unwind_VRS_Pop+52>:     b       0x1a5ac46c
<_Unwind_VRS_Pop+288>
   0x1a5ac384 <_Unwind_VRS_Pop+56>:     cmp     r3, #0
   0x1a5ac388 <_Unwind_VRS_Pop+60>:     bne     0x1a5ac468
<_Unwind_VRS_Pop+284>
   0x1a5ac38c <_Unwind_VRS_Pop+64>:     lsl     r2, r2, #16
   0x1a5ac390 <_Unwind_VRS_Pop+68>:     ldr     r12, [r0, #56]  ; 0x38
   0x1a5ac394 <_Unwind_VRS_Pop+72>:     lsr     r2, r2, #16
   0x1a5ac398 <_Unwind_VRS_Pop+76>:     mov     r1, r3
   0x1a5ac39c <_Unwind_VRS_Pop+80>:     mov     lr, #1
   0x1a5ac3a0 <_Unwind_VRS_Pop+84>:     ands    r3, r2, lr, lsl r1
=> 0x1a5ac3a4 <_Unwind_VRS_Pop+88>:     ldrne   r3, [r12], #4
   0x1a5ac3a8 <_Unwind_VRS_Pop+92>:     add     r0, r7, r1, lsl #2

(gdb) info locals
ptr = 0xfa
mask = 26624 = 0x6800
i = 11

print ptr
$1 = (_uw *) 0xfa
(gdb) print *ptr
Cannot access memory at address 0xfa
(gdb) info reg
r0             0x11a6be8        18508776
r1             0xb      11
r2             0x6800   26624
r3             0x800    2048
r4             0x86800  550912
r5             0x0      0
r6             0x11a6bc0        18508736
r7             0x11a6bc0        18508736
r8             0x0      0
r9             0xff0    4080
r10            0x11a6b44        18508612
r11            0x1a5b5f2c       442195756
r12            0xfa     250
sp             0x11a6a90        0x11a6a90
lr             0x1      1
pc             0x1a5ac3a4       0x1a5ac3a4 <_Unwind_VRS_Pop+88>
cpsr           0x10     16


Using the gcc in http://ftp.gnu.org/gnu/gcc/gcc-4.2.1/gcc-core-4.2.1.tar.bz2

Is anyone aware of the reason for this crash in _Unwind_VRS_Pop() for ARM
platform?


Thanks in advance

-Raghu

Reply via email to