NetBSD-Bugs archive

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

port-arm/58625: /usr/tests/libexec/ld.elf_so/t_ifunc_now crashes on aarch64



>Number:         58625
>Category:       port-arm
>Synopsis:       /usr/tests/libexec/ld.elf_so/t_ifunc_now crashes on aarch64
>Confidential:   no
>Severity:       critical
>Priority:       high
>Responsible:    port-arm-maintainer
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Thu Aug 22 07:35:00 +0000 2024
>Originator:     Martin Husemann
>Release:        NetBSD 10.99.11
>Organization:
The NetBSD Foundation, Inc.
>Environment:
System: NetBSD h-pulse.aprisoft.de 10.99.11 NetBSD 10.99.11 (GENERIC64) #457: Wed Aug 21 12:02:36 CEST 2024 martin%seven-days-to-the-wolves.aprisoft.de@localhost:/work/src/sys/arch/evbarm/compile/GENERIC64 evbarm
Architecture: aarch64
Machine: evbarm
>Description:

Running tests in /usr/tests/libexec/ld.elf_so reports a bogus test program:

Failed (bogus) test programs:
    t_ifunc_now

and leaves a t_ifunc_now.core around.

gdb says:

Reading symbols from t_ifunc_now...
(No debugging symbols found in t_ifunc_now)
[New process 2008]
Core was generated by `t_ifunc_now'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x0000fffff3a712ac in _rtld_call_ifunc () from /usr/libexec/ld.elf_so
(gdb) bt
#0  0x0000fffff3a712ac in _rtld_call_ifunc () from /usr/libexec/ld.elf_so
#1  0x0000fffff3a76a18 in _rtld_call_init_functions ()
   from /usr/libexec/ld.elf_so
#2  0x0000fffff3a773dc in _rtld () from /usr/libexec/ld.elf_so
#3  0x0000fffff3a70b10 in _rtld_start () from /usr/libexec/ld.elf_so
(gdb) x/16i $pc-16
   0xfffff3a7129c <_rtld_call_ifunc+172>:       ldp     x21, x22, [sp, #16]
   0xfffff3a712a0 <_rtld_call_ifunc+176>:       ldr     x30, [sp, #56]
   0xfffff3a712a4 <_rtld_call_ifunc+180>:       ldp     x19, x20, [sp], #64
   0xfffff3a712a8 <_rtld_call_ifunc+184>:       ret
=> 0xfffff3a712ac <_rtld_call_ifunc+188>:       str     x23, [x24, x25]
   0xfffff3a712b0 <_rtld_call_ifunc+192>:       ldp     x23, x24, [sp, #32]
   0xfffff3a712b4 <_rtld_call_ifunc+196>:       ldr     x25, [sp, #48]
   0xfffff3a712b8 <_rtld_call_ifunc+200>:       
    b   0xfffff3a71210 <_rtld_call_ifunc+32>
   0xfffff3a712bc:      nop
   0xfffff3a712c0 <_rtld_bind>: stp     x19, x20, [sp, #-64]!
   0xfffff3a712c4 <_rtld_bind+4>:       mov     x19, x0
   0xfffff3a712c8 <_rtld_bind+8>:       
    mov w0, #0x18                       // #24
   0xfffff3a712cc <_rtld_bind+12>:      stp     x21, x22, [sp, #16]
   0xfffff3a712d0 <_rtld_bind+16>:      umull   x20, w1, w0
   0xfffff3a712d4 <_rtld_bind+20>:      ldr     x21, [x19, #152]
   0xfffff3a712d8 <_rtld_bind+24>:      str     x30, [sp, #32]
(gdb) info reg
[..]
x23            0x8671270           140972656
x24            0x8670000           140967936
x25            0x1ff90             130960
x26            0xfffffff2afb8      281474975838136
x27            0xfeee56ea7000      280299613876224
x28            0xfffff3aa0070      281474769748080
x29            0x0                 0
x30            0xfffff3a71284      281474769556100
sp             0xfffffff2ad70      0xfffffff2ad70
pc             0xfffff3a712ac      0xfffff3a712ac <_rtld_call_ifunc+188>
cpsr           0x80000000          [ EL=0 BTYPE=0 N ]
fpsr           0x0                 [ ]
fpcr           0x0                 [ Len=0 Stride=0 RMode=0 ]
(gdb) x/x (0x8670000+0x1ff90)
0x868ff90 <*ABS*@got.plt>:      0x00000e40


>How-To-Repeat:

cd /usr/tests/libexec/ld.elf_so && atf-run t_ifunc_now

>Fix:
n/a



Home | Main Index | Thread Index | Old Index