diff options
Diffstat (limited to 'results/classifier/105/other/2773')
| -rw-r--r-- | results/classifier/105/other/2773 | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/results/classifier/105/other/2773 b/results/classifier/105/other/2773 new file mode 100644 index 00000000..62b60631 --- /dev/null +++ b/results/classifier/105/other/2773 @@ -0,0 +1,73 @@ +other: 0.829 +graphic: 0.779 +mistranslation: 0.744 +instruction: 0.697 +device: 0.695 +KVM: 0.681 +vnc: 0.672 +semantic: 0.589 +socket: 0.585 +assembly: 0.568 +boot: 0.554 +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 |