summary refs log tree commit diff stats
path: root/gitlab/issues/target_sparc/host_missing/accel_TCG/2773.toml
diff options
context:
space:
mode:
Diffstat (limited to 'gitlab/issues/target_sparc/host_missing/accel_TCG/2773.toml')
-rw-r--r--gitlab/issues/target_sparc/host_missing/accel_TCG/2773.toml70
1 files changed, 70 insertions, 0 deletions
diff --git a/gitlab/issues/target_sparc/host_missing/accel_TCG/2773.toml b/gitlab/issues/target_sparc/host_missing/accel_TCG/2773.toml
new file mode 100644
index 00000000..600932e4
--- /dev/null
+++ b/gitlab/issues/target_sparc/host_missing/accel_TCG/2773.toml
@@ -0,0 +1,70 @@
+id = 2773
+title = "qemu-system-sparc64 sometimes generates endless loops"
+state = "opened"
+created_at = "2025-01-12T13:23:51.686Z"
+closed_at = "n/a"
+labels = ["accel: TCG", "target: sparc"]
+url = "https://gitlab.com/qemu-project/qemu/-/issues/2773"
+host-os = "NetBSD"
+host-arch = "amd64"
+qemu-version = "QEMU emulator version 9.2.0"
+guest-os = "NetBSD"
+guest-arch = "sparc64"
+description = """Sometimes emulation "stops" in a busy loop hogging 1 cpu completely.
+gdb says:
+
+```
+0x00007d5805460ac5 in code_gen_buffer ()
+(gdb) info thread
+  Id   Target Id                     Frame 
+* 1    LWP 9166 of process 12669 ""  0x00007d5805460ac5 in code_gen_buffer ()
+  2    LWP 19293 of process 12669 "" 0x00007d584680803a in ____sigtimedwait50
+    () from /usr/lib/libc.so.12
+  3    LWP 20202 of process 12669 "" 0x00007d58468249ba in ___lwp_park60 ()
+   from /usr/lib/libc.so.12
+  4    LWP 12669 of process 12669 "" 0x00007d58467b72ca in _sys___pollts50 ()
+   from /usr/lib/libc.so.12
+(gdb) up
+#1  0x00000000007b3a0f in cpu_tb_exec (cpu=cpu@entry=0x7d58041ac680, 
+    itb=<optimized out>, tb_exit=tb_exit@entry=0x7d58037ffde8)
+    at ../accel/tcg/cpu-exec.c:458
+458\t    ret = tcg_qemu_tb_exec(cpu_env(cpu), tb_ptr);
+
+(gdb) down
+#0  0x00007d5805460ac5 in code_gen_buffer ()
+(gdb) x/16i $pc
+=> 0x7d5805460ac5 <code_gen_buffer+19401368>:\tmov    %r15,0x68(%rbp)
+   0x7d5805460ac9 <code_gen_buffer+19401372>:\txor    %r12,%r14
+   0x7d5805460acc <code_gen_buffer+19401375>:\tmov    %r14,0x80(%rbp)
+   0x7d5805460ad3 <code_gen_buffer+19401382>:\tmov    %r12,%rbx
+   0x7d5805460ad6 <code_gen_buffer+19401385>:\tmov    %rbx,0x70(%rbp)
+   0x7d5805460ada <code_gen_buffer+19401389>:\tmov    %r12,0x78(%rbp)
+   0x7d5805460ade <code_gen_buffer+19401393>:\tmov    %r14,%r12
+   0x7d5805460ae1 <code_gen_buffer+19401396>:\tshr    $0x20,%r12
+   0x7d5805460ae5 <code_gen_buffer+19401400>:\tand    $0x1,%r12d
+   0x7d5805460ae9 <code_gen_buffer+19401404>:\tdec    %r12
+   0x7d5805460aec <code_gen_buffer+19401407>:\tand    %rbx,%r12
+   0x7d5805460aef <code_gen_buffer+19401410>:\tmov    %r12d,%ebx
+   0x7d5805460af2 <code_gen_buffer+19401413>:\tmovb   $0x1,-0x4(%rbp)
+   0x7d5805460af6 <code_gen_buffer+19401417>:\tcmp    %r13,%rbx
+   0x7d5805460af9 <code_gen_buffer+19401420>:\t
+    je     0x7d5805460b20 <code_gen_buffer+19401459>
+   0x7d5805460aff <code_gen_buffer+19401426>:\t
+    jmp    0x7d5805460b04 <code_gen_buffer+19401431>
+(gdb) list
+453\t    if (qemu_loglevel_mask(CPU_LOG_TB_CPU | CPU_LOG_EXEC)) {
+454\t        log_cpu_exec(log_pc(cpu, itb), cpu, itb);
+455\t    }
+456\t
+457\t    qemu_thread_jit_execute();
+458\t    ret = tcg_qemu_tb_exec(cpu_env(cpu), tb_ptr);
+459\t    cpu->neg.can_do_io = true;
+460\t    qemu_plugin_disable_mem_helpers(cpu);
+461\t    /*
+462\t     * TODO: Delay swapping back to the read-write region of the TB
+```"""
+reproduce = """Unfortunately I have not been able to find a way to reliably reproduce this.
+Happens "often" to me, but not always.
+
+If you have any idea (like: what traces to enable) how to debug this I'll try to gather more information"""
+additional = "n/a"