diff options
| author | Christian Krinitsin <mail@krinitsin.com> | 2025-06-16 16:59:00 +0000 |
|---|---|---|
| committer | Christian Krinitsin <mail@krinitsin.com> | 2025-06-16 16:59:33 +0000 |
| commit | 9aba81d8eb048db908c94a3c40c25a5fde0caee6 (patch) | |
| tree | b765e7fb5e9a3c2143c68b0414e0055adb70e785 /results/classifier/118/none/2773 | |
| parent | b89a938452613061c0f1f23e710281cf5c83cb29 (diff) | |
| download | emulator-bug-study-9aba81d8eb048db908c94a3c40c25a5fde0caee6.tar.gz emulator-bug-study-9aba81d8eb048db908c94a3c40c25a5fde0caee6.zip | |
add 18th iteration of classifier
Diffstat (limited to 'results/classifier/118/none/2773')
| -rw-r--r-- | results/classifier/118/none/2773 | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/results/classifier/118/none/2773 b/results/classifier/118/none/2773 new file mode 100644 index 00000000..e5125e17 --- /dev/null +++ b/results/classifier/118/none/2773 @@ -0,0 +1,90 @@ +virtual: 0.781 +graphic: 0.779 +mistranslation: 0.744 +user-level: 0.736 +register: 0.716 +performance: 0.713 +peripherals: 0.703 +permissions: 0.696 +device: 0.695 +hypervisor: 0.689 +KVM: 0.681 +debug: 0.677 +vnc: 0.672 +ppc: 0.643 +TCG: 0.640 +i386: 0.636 +x86: 0.627 +arm: 0.603 +risc-v: 0.597 +semantic: 0.589 +VMM: 0.589 +socket: 0.585 +architecture: 0.570 +assembly: 0.568 +boot: 0.554 +PID: 0.541 +files: 0.528 +kernel: 0.513 +network: 0.506 + +qemu-system-sparc64 sometimes generates endless loops +Description of problem: +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 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>: mov %r15,0x68(%rbp) + 0x7d5805460ac9 <code_gen_buffer+19401372>: xor %r12,%r14 + 0x7d5805460acc <code_gen_buffer+19401375>: mov %r14,0x80(%rbp) + 0x7d5805460ad3 <code_gen_buffer+19401382>: mov %r12,%rbx + 0x7d5805460ad6 <code_gen_buffer+19401385>: mov %rbx,0x70(%rbp) + 0x7d5805460ada <code_gen_buffer+19401389>: mov %r12,0x78(%rbp) + 0x7d5805460ade <code_gen_buffer+19401393>: mov %r14,%r12 + 0x7d5805460ae1 <code_gen_buffer+19401396>: shr $0x20,%r12 + 0x7d5805460ae5 <code_gen_buffer+19401400>: and $0x1,%r12d + 0x7d5805460ae9 <code_gen_buffer+19401404>: dec %r12 + 0x7d5805460aec <code_gen_buffer+19401407>: and %rbx,%r12 + 0x7d5805460aef <code_gen_buffer+19401410>: mov %r12d,%ebx + 0x7d5805460af2 <code_gen_buffer+19401413>: movb $0x1,-0x4(%rbp) + 0x7d5805460af6 <code_gen_buffer+19401417>: cmp %r13,%rbx + 0x7d5805460af9 <code_gen_buffer+19401420>: + je 0x7d5805460b20 <code_gen_buffer+19401459> + 0x7d5805460aff <code_gen_buffer+19401426>: + jmp 0x7d5805460b04 <code_gen_buffer+19401431> +(gdb) list +453 if (qemu_loglevel_mask(CPU_LOG_TB_CPU | CPU_LOG_EXEC)) { +454 log_cpu_exec(log_pc(cpu, itb), cpu, itb); +455 } +456 +457 qemu_thread_jit_execute(); +458 ret = tcg_qemu_tb_exec(cpu_env(cpu), tb_ptr); +459 cpu->neg.can_do_io = true; +460 qemu_plugin_disable_mem_helpers(cpu); +461 /* +462 * TODO: Delay swapping back to the read-write region of the TB +``` +Steps to 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 |