8.1.0 regression: abnormal segfault in qemu-riscv64-static

Host environment

  • Operating system: Arch Linux
  • OS/kernel version: Linux 6.5.4-arch2-1 #1 SMP PREEMPT_DYNAMIC Thu, 21 Sep 2023 11:06:39 +0000 x86_64 GNU/Linux
  • Architecture: x86
  • QEMU flavor: qemu-riscv64-static
  • QEMU version: 8.1.0
  • QEMU command line:

Emulated/Virtualized environment

  • Operating system: Arch Linux riscv64
  • OS/kernel version: Linux 6.5.4-arch2-1 #1 SMP PREEMPT_DYNAMIC Thu, 21 Sep 2023 11:06:39 +0000 riscv64 GNU/Linux
  • Architecture: riscv

Description of problem

loading_from_clipboard_test of Cockatrice segfaults in qemu-riscv64-static.

Steps to reproduce

  1. Setup an Arch Linux riscv64 qemu-user container: https://github.com/felixonmars/archriscv-packages/wiki/Setup-Arch-Linux-RISC-V-Development-Environment
  2. Start the container: sudo systemd-nspawn -D ./archriscv -a -U
  3. Build cockatrice 2.9.0 with tests in the container: https://github.com/Cockatrice/Cockatrice/releases/tag/2023-09-14-Release-2.9.0
  4. Run tests/loading_from_clipboard/loading_from_clipboard_test in the container

Additional information

I have done bisection and find out that this commit caused the regression: 2d708164

qemu built from HEAD(494a6a2c) is still affected by this bug.

Backtrace:

#0  0x00007fffe849f133 in code_gen_buffer ()
#1  0x00007ffff7b3a433 in cpu_tb_exec (cpu=0x7ffff7f71010, itb=0x7fffe849f040 <code_gen_buffer+4845587>,
tb_exit=0x7fffffffde20) at ../qemu/accel/tcg/cpu-exec.c:457
#2  0x00007ffff7b3aeac in cpu_loop_exec_tb (cpu=0x7ffff7f71010, tb=0x7fffe849f040 <code_gen_buffer+4845587>,
pc=46912625654024, last_tb=0x7fffffffde30, tb_exit=0x7fffffffde20) at ../qemu/accel/tcg/cpu-exec.c:919
#3  0x00007ffff7b3b0e0 in cpu_exec_loop (cpu=0x7ffff7f71010, sc=0x7fffffffdeb0) at ../qemu/accel/tcg/cpu-exec.c:1040
#4  0x00007ffff7b3b19e in cpu_exec_setjmp (cpu=0x7ffff7f71010, sc=0x7fffffffdeb0)
at ../qemu/accel/tcg/cpu-exec.c:1057
#5  0x00007ffff7b3b225 in cpu_exec (cpu=0x7ffff7f71010) at ../qemu/accel/tcg/cpu-exec.c:1083
#6  0x00007ffff7a53707 in cpu_loop (env=0x7ffff7f71330) at ../qemu/linux-user/riscv/cpu_loop.c:37
#7  0x00007ffff7b5d0e0 in main (argc=4, argv=0x7fffffffe768, envp=0x7fffffffe790) at ../qemu/linux-user/main.c:999
0x7fffe849f105 <code_gen_buffer+4845784>        jl     0x7fffe849f265 <code_gen_buffer+4846136>                                                                                                                                        │
│    0x7fffe849f10b <code_gen_buffer+4845790>        mov    0x50(%rbp),%rbx                                                                                                                                                                 │
│    0x7fffe849f10f <code_gen_buffer+4845794>        mov    %rbx,%r12                                                                                                                                                                       │
│    0x7fffe849f112 <code_gen_buffer+4845797>        mov    %r12,0x70(%rbp)                                                                                                                                                                 │
│    0x7fffe849f116 <code_gen_buffer+4845801>        movabs $0x2aaaaf9bb000,%r13                                                                                                                                                            │
│    0x7fffe849f120 <code_gen_buffer+4845811>        mov    %r13,0x38(%rbp)                                                                                                                                                                 │
│    0x7fffe849f124 <code_gen_buffer+4845815>        movq   $0xffffffffaf9bb000,0x60(%rbp)                                                                                                                                                  │
│    0x7fffe849f12c <code_gen_buffer+4845823>        mov    $0xffffffffaf9bb4e0,%r13                                                                                                                                                        │
│  > 0x7fffe849f133 <code_gen_buffer+4845830>        movzwl 0x0(%r13),%r13d                                                                                                                                                                 │
│    0x7fffe849f138 <code_gen_buffer+4845835>        and    $0x7f,%ebx                                                                                                                                                                      │
│    0x7fffe849f13b <code_gen_buffer+4845838>        shl    $0x7,%r13                                                                                                                                                                       │
│    0x7fffe849f13f <code_gen_buffer+4845842>        add    %r13,%rbx                                                                                                                                                                       │
│    0x7fffe849f142 <code_gen_buffer+4845845>        mov    %rbx,0x50(%rbp)                                                                                                                                                                 │
│    0x7fffe849f146 <code_gen_buffer+4845849>        shl    %rbx                                                                                                                                                                            │
│    0x7fffe849f149 <code_gen_buffer+4845852>        mov    %rbx,0x38(%rbp)                                                                                                                                                                 │
│    0x7fffe849f14d <code_gen_buffer+4845856>        movabs $0x2aaaaf9a88e0,%r13                                                                                                                                                            │
│    0x7fffe849f157 <code_gen_buffer+4845866>        add    %r13,%rbx                                                                                                                                                                       │
│    0x7fffe849f15a <code_gen_buffer+4845869>        mov    %rbx,0x60(%rbp)                            
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information