qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] debugging weirdness


From: Tom Musgrove
Subject: [Qemu-devel] debugging weirdness
Date: Wed, 25 Feb 2004 21:40:07 +0000

I've continued to try to find the cause of my bug,

I get a bt of

#0 0x00020b0c in cpu_x86_exec (env1=0x1f) at /Users/tom/darwine/related/qemu/exec-all.h:284 #1 0x00006dc0 in main_loop (opaque=0x1f) at /Users/tom/darwine/related/qemu/vl.c:3090 #2 0x00006dc0 in main_loop (opaque=0x1f) at /Users/tom/darwine/related/qemu/vl.c:3090 #3 0x00007944 in main (argc=983236, argv=0x20b060) at /Users/tom/darwine/related/qemu/vl.c:3722

note the duplicate?

I also get a bt of

#1 0x00020c10 in cpu_x86_exec (env1=0xffe0) at /Users/tom/darwine/related/qemu/cpu-exec.c:477 #2 0x00006dc0 in main_loop (opaque=0xffe0) at /Users/tom/darwine/related/qemu/vl.c:3090 #3 0x00007944 in main (argc=983040, argv=0x20b320) at /Users/tom/darwine/related/qemu/vl.c:3722

without the duplicate -usually it is the first case.

So I set a break point at vl.c:3090

It enters this loop a number of times, so I do continue at different steppings

the weirdness comes in, in that the number passed to continue effects when it crashes,

for instance

continue 18 and above usually instantly gives BAD_ACCESS
continue 17 doesn't usually give a BAD_ACCESS immediately nor does it followed by single continues however followed by larger continues (ie continue 5) it does result in a BAD_ACCESS

continue 5 it crashed on the 6th time
continue 2 it crashed on the 53rd time
continue 1 it never crashes

This makes no sense

Here is the complete loop of the code when it is not giving a BAD_ACCESS

****Begin****

3090            ret = cpu_exec(env);
(gdb)
cpu_x86_exec (env1=0x1004000) at /Users/tom/darwine/related/qemu/cpu-exec.c:125 125 env->eflags &= ~(DF_MASK | CC_O | CC_S | CC_Z | CC_A | CC_P | CC_C);
(gdb)
40      {
(gdb)
cpu_x86_exec (env1=0x1004000) at /Users/tom/darwine/related/qemu/cpu-exec.c:80
80          saved_env = env;
(gdb)
40      {
(gdb)
123         DF = 1 - (2 * ((env->eflags >> 10) & 1));
(gdb)
81          env = env1;
(gdb)
122 CC_SRC = env->eflags & (CC_O | CC_S | CC_Z | CC_A | CC_P | CC_C);
(gdb)
123         DF = 1 - (2 * ((env->eflags >> 10) & 1));
(gdb)
125 env->eflags &= ~(DF_MASK | CC_O | CC_S | CC_Z | CC_A | CC_P | CC_C);
(gdb)
124         CC_OP = CC_OP_EFLAGS;
(gdb)
122 CC_SRC = env->eflags & (CC_O | CC_S | CC_Z | CC_A | CC_P | CC_C);
(gdb)
123         DF = 1 - (2 * ((env->eflags >> 10) & 1));
(gdb)
140         env->exception_index = -1;
(gdb)
122 CC_SRC = env->eflags & (CC_O | CC_S | CC_Z | CC_A | CC_P | CC_C);
(gdb)
123         DF = 1 - (2 * ((env->eflags >> 10) & 1));
(gdb)
125 env->eflags &= ~(DF_MASK | CC_O | CC_S | CC_Z | CC_A | CC_P | CC_C);
(gdb)
140         env->exception_index = -1;
(gdb)
77          saved_T0 = T0;
(gdb)
78          saved_T1 = T1;
(gdb)
79          saved_T2 = T2;
(gdb)
144             if (setjmp(env->jmp_env) == 0) {
(gdb)
147                 if (env->exception_index >= 0) {
(gdb)
145                 env->current_tb = NULL;
(gdb)
147                 if (env->exception_index >= 0) {
(gdb)
180                 for(;;) {
(gdb)
179                 T0 = 0; /* force lookup of first TB */
(gdb)
180                 for(;;) {
(gdb)
185                     interrupt_request = env->interrupt_request;
(gdb)
186                     if (__builtin_expect(interrupt_request, 0)) {
(gdb)
189                         if ((interrupt_request & CPU_INTERRUPT_HARD) &&
(gdb)
215                         if (interrupt_request & CPU_INTERRUPT_EXITTB) {
(gdb)
225                         if (interrupt_request & CPU_INTERRUPT_EXIT) {
(gdb)
226 env->interrupt_request &= ~CPU_INTERRUPT_EXIT;
(gdb)
227                             env->exception_index = EXCP_INTERRUPT;
(gdb)
226 env->interrupt_request &= ~CPU_INTERRUPT_EXIT;
(gdb)
228                             cpu_loop_exit();
(gdb)
cpu_loop_exit () at /Users/tom/darwine/related/qemu/target-i386/helper.c:109
109     {
(gdb)
136         longjmp(env->jmp_env, 1);
(gdb)
109     {
(gdb)
136         longjmp(env->jmp_env, 1);
(gdb)
109     {
(gdb)
cpu_loop_exit () at /Users/tom/darwine/related/qemu/target-i386/helper.c:136
136         longjmp(env->jmp_env, 1);
(gdb)
pic_set_irq: irq=0 level=1
pic0: imr=0 irr=1 padd=0
pic1: imr=0 irr=0 padd=0
pic: cpu_interrupt req=0
pic_set_irq: irq=0 level=0
pic0: imr=0 irr=1 padd=0
pic1: imr=0 irr=0 padd=0
pic: cpu_interrupt req=0

****End****

_________________________________________________________________
Say “good-bye” to spam, viruses and pop-ups with MSN Premium -- free trial offer! http://click.atdmt.com/AVE/go/onm00200359ave/direct/01/





reply via email to

[Prev in Thread] Current Thread [Next in Thread]