On 07/29/2012 06:47 PM, Avi Kivity wrote: >> What might have happened is that the movdqu instruction faulted (as it's >> an fpu instruction), and on the way back from the fault, ds and es >> didn't get restored correctly. >> >> You can test this by writing a trivial version of g_str_equal() >> somewhere in the qemu source code and rebuilding it. >> >> > > from entry_32.S: > > .macro RESTORE_REGS pop=0 > RESTORE_INT_REGS > 1: popl_cfi %ds > /*CFI_RESTORE ds;*/ > 2: popl_cfi %es > /*CFI_RESTORE es;*/ > 3: popl_cfi %fs > /*CFI_RESTORE fs;*/ > POP_GS \pop > .pushsection .fixup, "ax" > 4: movl $0, (%esp) > jmp 1b > 5: movl $0, (%esp) > jmp 2b > 6: movl $0, (%esp) > jmp 3b > .popsection > > this piece of code tries to restore %ds, and if it fails, zeros it, > which is consistent with the core dump. > > This could happen if kvm is failing to restore GDT correctly. > Possible culprit: b2da15ac26a0c00. -- error compiling committee.c: too many arguments to function -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html