[Bug 257750] lldb p command crashes on Raspberry Pi 4

From: <bugzilla-noreply_at_freebsd.org>
Date: Wed, 11 Aug 2021 00:26:26 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=257750

            Bug ID: 257750
           Summary: lldb p command crashes on Raspberry Pi 4
           Product: Base System
           Version: 13.0-RELEASE
          Hardware: arm64
                OS: Any
            Status: New
          Severity: Affects Many People
          Priority: ---
         Component: arm
          Assignee: freebsd-arm@FreeBSD.org
          Reporter: bc979@lafn.org

The following code - compile with cc -g

#include <stdio.h>
#include <string.h>
#include <strings.h>
#include <stdlib.h>

int main (int argc, char *argv[])
{
        int i, randx, k, p;
        int initial;

        initial = atoi (argv[1]);
        randx = initial;
        k = atoi (argv[2]);
        p = atoi (argv[3]);

        i = 1;
        randx = (k * randx) % p;
        while (randx != initial)
        {
                if (i < 5) printf ("count = %d randx = %d\n", i, randx);
                randx = (k * randx) % p;
                i++;
        }
        printf ("count = %d\n", i);
}

when run with lldb on Raspberry Pi 4 gives:

test% lldb rand
(lldb) target create "rand"
Current executable set to '/home/doug/rand/rand' (aarch64).
(lldb) b main
Breakpoint 1: where = rand`main + 24 at rand.c:11:18, address =
0x000000000021089c
(lldb) r 2357 109 100000
Process 1673 launching
Process 1673 launched: '/home/doug/rand/rand' (aarch64)
Process 1673 stopped
* thread #1, name = 'rand', stop reason = breakpoint 1.1
    frame #0: 0x000000000021089c rand`main(argc=4, argv=0x0000ffffffffea68) at
rand.c:11:18
   8            int i, randx, k, p;
   9            int initial;
   10   
-> 11           initial = atoi (argv[1]);
   12           randx = initial;
   13           k = atoi (argv[2]);
   14           p = atoi (argv[3]);
(lldb) n
Process 1673 stopped
* thread #1, name = 'rand', stop reason = step over
    frame #0: 0x00000000002108ac rand`main(argc=4, argv=0x0000ffffffffea68) at
rand.c:12:10
   9            int initial;
   10   
   11           initial = atoi (argv[1]);
-> 12           randx = initial;
   13           k = atoi (argv[2]);
   14           p = atoi (argv[3]);
   15   
(lldb) p initial
PLEASE submit a bug report to https://bugs.freebsd.org/submit/ and include the
crash backtrace.
Stack dump:
0.      Program arguments: lldb rand 
1.      HandleCommand(command = "p initial")
#0 0x00000000034d9a4c PrintStackTrace
/usr/src/contrib/llvm-project/llvm/lib/Support/Unix/Signals.inc:564:13
#1 0x00000000034d7fb0 __cxx_atomic_store<CallbackAndCookie::Status>
/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic:985:5
#2 0x00000000034d7fb0 store
/usr/obj/usr/src/arm64.aarch64/tmp/usr/include/c++/v1/atomic:1594:10
#3 0x00000000034d7fb0 RunSignalHandlers
/usr/src/contrib/llvm-project/llvm/lib/Support/Signals.cpp:70:16
#4 0x00000000034da070 SignalHandler
/usr/src/contrib/llvm-project/llvm/lib/Support/Unix/Signals.inc:0:3
#5 0x000000004457e994 handle_signal /usr/src/lib/libthr/thread/thr_sig.c:0:3
Segmentation fault (core dumped)
test% 


When run on amd64 yields:

master% lldb rand
(lldb) target create "rand"
Current executable set to '/home/doug/rand/rand' (x86_64).
(lldb) b main
Breakpoint 1: where = rand`main + 22 at rand.c:11:25, address =
0x0000000000201906
(lldb) r 2357 109 100000
Process 60280 launching
Process 60280 launched: '/home/doug/rand/rand' (x86_64)
Process 60280 stopped
* thread #1, name = 'rand', stop reason = breakpoint 1.1
    frame #0: 0x0000000000201906 rand`main(argc=4, argv=0x00007fffffffea68) at
rand.c:11:25
   8            int i, randx, k, p;
   9            int initial;
   10   
-> 11           initial = atoi (argv[1]);
   12           randx = initial;
   13           k = atoi (argv[2]);
   14           p = atoi (argv[3]);
(lldb) n
Process 60280 stopped
* thread #1, name = 'rand', stop reason = step over
    frame #0: 0x0000000000201916 rand`main(argc=4, argv=0x00007fffffffea68) at
rand.c:12:17
   9            int initial;
   10   
   11           initial = atoi (argv[1]);
-> 12           randx = initial;
   13           k = atoi (argv[2]);
   14           p = atoi (argv[3]);
   15   
(lldb) p initial
(int) $0 = 2357
(lldb) 


This appears to be the same as 248745 which is marked as Closed FIXED.  fr v
works fine on both architectures.

-- 
You are receiving this mail because:
You are the assignee for the bug.