1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
PID: 0.696
architecture: 0.688
assembly: 0.684
arm: 0.672
risc-v: 0.650
user-level: 0.630
TCG: 0.603
peripherals: 0.602
mistranslation: 0.591
x86: 0.586
device: 0.582
VMM: 0.577
ppc: 0.575
permissions: 0.571
semantic: 0.553
vnc: 0.551
performance: 0.535
debug: 0.530
register: 0.520
kernel: 0.495
files: 0.486
socket: 0.479
boot: 0.475
hypervisor: 0.458
i386: 0.445
graphic: 0.422
KVM: 0.418
virtual: 0.417
network: 0.390
qemu-arm crashes (SIGSEGV) when executing push instruction
Dear all,
I am afraid I found a problem, it seems like qemu-arm crashes when executing assembly push instruction.
I use qemu version 5.2.0, but it checked an older version (4.2.1) and the problem was also present. I start qemu using "qemu-arm -cpu cortex-m4 -singlestep -g 1234 <path to elf file>"
Callstack before crash (host)
#0 0x000055555575961f in stl_he_p (ptr=0x2002fffc, v=0) at /home/faust1002/Programming/qemu/qemu-5.2.0/include/qemu/bswap.h:353
#1 0x0000555555759716 in stl_le_p (ptr=0x2002fffc, v=0) at /home/faust1002/Programming/qemu/qemu-5.2.0/include/qemu/bswap.h:395
#2 0x000055555575d3c3 in tcg_qemu_tb_exec (env=0x555555d28050, tb_ptr=0x7fffe800010a "\r\b") at ../tcg/tci.c:1221
#3 0x00005555556bd982 in cpu_tb_exec (cpu=0x555555d1fd70, itb=0x7fffe8000000) at ../accel/tcg/cpu-exec.c:178
#4 0x00005555556be57e in cpu_loop_exec_tb (cpu=0x555555d1fd70, tb=0x7fffe8000000, last_tb=0x7fffffffd8a8, tb_exit=0x7fffffffd8a0) at ../accel/tcg/cpu-exec.c:658
#5 0x00005555556be7ea in cpu_exec (cpu=0x555555d1fd70) at ../accel/tcg/cpu-exec.c:771
#6 0x000055555560af1d in cpu_loop (env=0x555555d28050) at ../linux-user/arm/cpu_loop.c:237
#7 0x00005555557415a7 in main (argc=7, argv=0x7fffffffe0f8, envp=0x7fffffffe138) at ../linux-user/main.c:861
Callstack before crash (target)
Program received signal SIGSEGV, Segmentation fault.
Reset_Handler () at startup.s:48
48 push {r14}
Please find the elf file I use attached.
Kind regards
The program is buggy.
The first instruction sets the stack to 0x20020000,
but that address is not mapped.
Program Headers:
Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align
LOAD 0x010000 0x08000000 0x08000000 0x0025c 0x0025c R E 0x10000
LOAD 0x020000 0x20000000 0x0800025c 0x00000 0x00600 RW 0x10000
The data segment only goes from 0x20000000 - 0x20000600.
|