Package: rr
Version: 5.8.0-1
Severity: normal
X-Debbugs-Cc: debian-...@lists.debian.org, bernha...@mailbox.org
User: debian-...@lists.debian.org
Usertags: arm64



Dear Maintainer,
I tried to run rr within a Debian arm64 trixie/unstable,
running at a Raspberry Pi 3 with a ARM Cortex-A53.

I know this CPU does not support rr,
but crashing may still not be desired.

Following is an example gdb session where the crash happens
in the static initialization by using a "retaa" instruction,
which seems to belong to pointer authentication, but I am
not sure if this CPU is supposed to support it.

If pointer authentication is not part of the arm64 baseline,
maybe the package isa-support should provide a package
which rr can depend on, like it does to sse2-support at i386?

Kind regards,
Bernhard



root@rpi3-20240331:~# gdb -q --args rr true
Reading symbols from rr...
Reading symbols from 
/usr/lib/debug/.build-id/d5/cbd34499cde785655fcd7cb84960a78162b147.debug...
(gdb) set width 0
(gdb) set pagination off
(gdb) run
Starting program: /usr/bin/rr true
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/aarch64-linux-gnu/libthread_db.so.1".

Program received signal SIGILL, Illegal instruction.
0x0000aaaaaab1be44 in std::vector<rr::Command*, std::allocator<rr::Command*> 
>::_M_realloc_insert<rr::Command*> (this=<optimized out>, __position=..., 
__position@entry=non-dereferenceable iterator for std::vector) at 
/usr/include/c++/13/bits/vector.tcc:524
warning: Source file is more recent than executable.
524         }
(gdb) bt
#0  0x0000aaaaaab1be44 in std::vector<rr::Command*, std::allocator<rr::Command*> 
>::_M_realloc_insert<rr::Command*> (this=<optimized out>, __position=..., 
__position@entry=non-dereferenceable iterator for std::vector) at 
/usr/include/c++/13/bits/vector.tcc:524
#1  0x0000aaaaaab1b950 in std::vector<rr::Command*, std::allocator<rr::Command*> 
>::emplace_back<rr::Command*> (this=<optimized out>) at 
/usr/include/c++/13/bits/stl_iterator.h:1076
#2  std::vector<rr::Command*, std::allocator<rr::Command*> >::push_back 
(__x=@0xfffffffffc10: 0xaaaaaad50560 <rr::BuildidCommand::singleton>, this=<optimized out>) 
at /usr/include/c++/13/bits/stl_vector.h:1299
#3  rr::Command::Command (this=this@entry=0xaaaaaad50560 <rr::BuildidCommand::singleton>, 
name=name@entry=0xaaaaaacc8310 "buildid", help=help@entry=0xaaaaaacc8280 " rr buildid\n  
Accepts paths on stdin, prints buildids on stdout. Will terminate when\n  either an empty line or an 
invalid path is provided.\n") at ./src/Command.cc:37
#4  0x0000aaaaaaaf9900 in rr::BuildidCommand::BuildidCommand (help=0xaaaaaacc8280 " rr buildid\n  
Accepts paths on stdin, prints buildids on stdout. Will terminate when\n  either an empty line or an 
invalid path is provided.\n", name=0xaaaaaacc8310 "buildid", this=0xaaaaaad50560 
<rr::BuildidCommand::singleton>) at ./src/BuildidCommand.cc:19
#5  __static_initialization_and_destruction_0 () at ./src/BuildidCommand.cc:28
#6  _GLOBAL__sub_I__ZN2rr14BuildidCommand9singletonE () at 
./src/BuildidCommand.cc:56
#7  0x0000fffff77b229c in call_init (env=<optimized out>, argv=0xfffffffffcd8, 
argc=2) at ../csu/libc-start.c:145
#8  __libc_start_main_impl (main=0xaaaaaaafa530 <main(int, char**)>, argc=2, argv=0xfffffffffcd8, 
init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, 
stack_end=<optimized out>) at ../csu/libc-start.c:347
#9  0x0000aaaaaaafc970 in _start ()
(gdb) display/i $pc
1: x/i $pc
=> 0xaaaaaab1be44 
<_ZNSt6vectorIPN2rr7CommandESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_+180>:
   retaa
(gdb) shell lscpu
Architecture:             aarch64
  CPU op-mode(s):         32-bit, 64-bit
  Byte Order:             Little Endian
CPU(s):                   4
  On-line CPU(s) list:    0-3
Vendor ID:                ARM
  Model name:             Cortex-A53
    Model:                4
    Thread(s) per core:   1
    Core(s) per cluster:  4
    Socket(s):            -
    Cluster(s):           1
    Stepping:             r0p4
    CPU(s) scaling MHz:   100%
    CPU max MHz:          1200,0000
    CPU min MHz:          600,0000
    BogoMIPS:             38,40
    Flags:                fp asimd evtstrm crc32 cpuid
...
(gdb) shell uname -a
Linux rpi3-20240331 6.10.3-arm64 #1 SMP Debian 6.10.3-1 (2024-08-04) aarch64 
GNU/Linux
(gdb)




-- System Information:
Debian Release: trixie/sid
  APT prefers testing-debug
  APT policy: (500, 'testing-debug'), (500, 'testing')
Architecture: arm64 (aarch64)

Kernel: Linux 6.10.3-arm64 (SMP w/4 CPU threads)
Kernel taint flags: TAINT_CRAP
Locale: LANG=de_DE.UTF-8, LC_CTYPE=de_DE.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

Versions of packages rr depends on:
ii  libbrotli1      1.1.0-2+b4
ii  libc6           2.39-6
ii  libcapnp-1.0.1  1.0.1-4
ii  libgcc-s1       14.2.0-1
ii  libstdc++6      14.2.0-1
ii  python3         3.12.4-1
ii  zlib1g          1:1.3.dfsg+really1.3.1-1

rr recommends no packages.

rr suggests no packages.

-- no debconf information

Reply via email to