[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] Crash on Windows XP startup
From: |
Catalin Patulea |
Subject: |
Re: [Qemu-devel] Crash on Windows XP startup |
Date: |
Fri, 9 Nov 2012 13:59:27 -0500 |
I can post the target code and the code generated by TCG - not sure
how helpful that would be. There also seems to be a diff between what
is logged by "-d out_asm" and what I see in gdb with disass, and the
segv occurs in one of the diff blocks.
On Fri, Nov 9, 2012 at 1:42 PM, Catalin Patulea <address@hidden> wrote:
> SIGSEGV is in target code:
>
> (gdb) bt
> #0 0x00000000402fd349 in code_gen_buffer ()
> #1 0x000000000056113b in cpu_x86_exec (env=0x19489f0)
> at /usr/local/google/home/catalinp/src/qemu/cpu-exec.c:599
> #2 0x00000000005625f9 in tcg_cpu_exec (env=0x19489f0)
> at /usr/local/google/home/catalinp/src/qemu/cpus.c:1115
> #3 tcg_exec_all () at /usr/local/google/home/catalinp/src/qemu/cpus.c:1148
> #4 qemu_tcg_cpu_thread_fn (arg=<optimized out>)
> at /usr/local/google/home/catalinp/src/qemu/cpus.c:841
> #5 0x00007ffff6315e9a in start_thread (arg=0x7fffee690700) at
> pthread_create.c:308
> #6 0x00007ffff6042cbd in clone () at
> ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
> #7 0x0000000000000000 in ?? ()
>
> The patch (disabling the invalidate_and_set_dirty) does fix it for me as well.
>
> On Thu, Nov 8, 2012 at 1:53 PM, Gerhard Wiesinger <address@hidden> wrote:
>> Hello,
>>
>> I bisected down a Windows XP startup crash to the following commit:
>>
>> 0b57e287138728f72d88b06e69b970c5d745c44a is the first bad commit
>> commit 0b57e287138728f72d88b06e69b970c5d745c44a
>> Author: David Gibson <address@hidden>
>> Date: Mon Sep 10 12:30:57 2012 +1000
>>
>> Reproduceable on qemu HEAD and by commenting out the refactored patch into a
>> function.
>>
>> How to proceed?
>>
>> Ciao,
>> Gerhard
>>
>> diff --git a/exec.c b/exec.c
>> index af94f9c..a937882 100644
>> --- a/exec.c
>> +++ b/exec.c
>> @@ -3501,7 +3501,7 @@ void cpu_physical_memory_write_rom(hwaddr addr,
>> /* ROM/RAM case */
>> ptr = qemu_get_ram_ptr(addr1);
>> memcpy(ptr, buf, l);
>> - invalidate_and_set_dirty(addr1, l);
>> + //invalidate_and_set_dirty(addr1, l);
>> qemu_put_ram_ptr(ptr);
>> }
>> len -= l;
>>
>>