This appears to be a compiler bug.  Using plain gcc-
linaro-4.5-2010.11-1, parse_warn includes the following assembly:

 266:   f7ff fffe       bl      0 <dcgettext>
                        266: R_ARM_THM_CALL     dcgettext
 26a:   4632            mov     r2, r6
 26c:   f104 0108       add.w   r1, r4, #8
 270:   aefd            add     r6, sp, #1012   ; 0x3f4
 272:   9600            str     r6, [sp, #0]
 274:   4603            mov     r3, r0
 276:   1d20            adds    r0, r4, #4
 278:   f7ff ff8a       bl      190 <parse_error_msg.clone.1>
 27c:   4631            mov     r1, r6
 27e:   a803            add     r0, sp, #12
 280:   f7ff fffe       bl      0 <str_escape_fmt>

Note that r6 is set to &buf at 0x270, stored on the stack at 0x272, and
put into r1 at 0x27c.  parse_error_msg() however corrupts r6:

00000190 <parse_error_msg.clone.1>:
 190:   b580            push    {r7, lr}
 192:   b082            sub     sp, #8
 194:   4614            mov     r4, r2
 196:   4606            mov     r6, r0
 198:   460d            mov     r5, r1

which causes str_escape_fmt() to stomp on memory.

Either the compiler should call parse_error_msg (not the clone), or save
r6 in the clone, or restore r6 from the stack before calling
str_escape_fmt().


** Attachment added: "objdump -dx of parsehelp.o"
   
https://bugs.launchpad.net/ubuntu/+source/dpkg/+bug/674146/+attachment/1742921/+files/parsehelp.dump

** Changed in: gcc-linaro
       Status: New => Triaged

** Changed in: gcc-linaro
   Importance: Undecided => High

-- 
dpkg segfaults during debootstrap on natty armel
https://bugs.launchpad.net/bugs/674146
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.

-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to