summary refs log tree commit diff stats
path: root/results/classifier/zero-shot-user-mode/syscall/2604
blob: 056265b218f5737735fd4a2b4dbd89954e4d8892 (plain) (blame)
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
syscall: 0.388
runtime: 0.308
instruction: 0.304



qemu-user-static crash when executing generated  NEON code due to failure to detect invalidation
Description of problem:
`qemu-arm-static` crashes 100% of times when attempting to run NEON code. The same executable, when run in `system` emulation mode, works without issue.

I experience this particular issue when attempting to test GStreamer's Orc library with NEON codegen with QEMU user emulation.
Steps to reproduce:
1. Clone https://gitlab.freedesktop.org/gstreamer/orc.git
2. Build with `meson setup build -Ddefault_library=static; meson compile -C build`
3. Run `qemu-arm-static ./build/tools/orc-bugreport`
Additional information:
The crash always happens inside the same JIT code. It is not a memory access, so there is no reason for QEMU to report SIGSEGV:

```
Program received signal SIGSEGV, Segmentation fault.
0x409e503c in ?? ()
(gdb) bt
#0  0x409e503c in ?? ()
#1  0x00408bc6 in orc_executor_run (ex=0x51cfc0) at ../orc/orcexecutor.c:51
#2  0x00489692 in orc_test_compare_output_full_for_target (program=0x4bcd90, flags=0, 
    target_name=0x0) at ../orc-test/orctest.c:800
#3  0x00489004 in orc_test_compare_output_full (program=0x4bcd90, flags=0)
    at ../orc-test/orctest.c:664
#4  0x00404826 in test_opcode_src (opcode=0x4b098c <opcodes+2400>)
    at ../tools/orc-bugreport.c:252
#5  0x004045d8 in test_opcodes () at ../tools/orc-bugreport.c:188
#6  0x004043f2 in main (argc=1, argv=0x40800704) at ../tools/orc-bugreport.c:118
(gdb) disas 0x409e5030
No function contains specified address.
(gdb) disas 0x409e5030, +10
Dump of assembler code from 0x409e5030 to 0x409e503a:
   0x409e5030:  vld1.8  {d4-d5}, [r3]
   0x409e5034:  vst1.8  {d4-d5}, [r2]
   0x409e5038:  add     r2, r2, #16
End of assembler dump.
(gdb) disas 0x409e5030, +20
Dump of assembler code from 0x409e5030 to 0x409e5044:
   0x409e5030:  vld1.8  {d4-d5}, [r3]
   0x409e5034:  vst1.8  {d4-d5}, [r2]
   0x409e5038:  add     r2, r2, #16
=> 0x409e503c:  add     r3, r3, #16
   0x409e5040:  subs    r12, r12, #1
End of assembler dump.
(gdb) 
```