From mboxrd@z Thu Jan 1 00:00:00 1970 From: Gleb Natapov Subject: Re: qemu-kvm-1.1.0 crashing with kernel 3.5.0-rc6 Date: Sun, 29 Jul 2012 20:54:53 +0300 Message-ID: <20120729175453.GA32360@redhat.com> References: <5011D123.4060101@googlemail.com> <5012719A.5080208@googlemail.com> <5012E659.7060304@googlemail.com> <50152FC8.20905@redhat.com> <50154294.9040705@googlemail.com> <50154632.7010304@redhat.com> <50155AF4.9050500@redhat.com> <5015662A.2000006@redhat.com> <501577D1.7030205@googlemail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: Avi Kivity , Eric Northup , kvm@vger.kernel.org, Jan Kiszka To: Chris Clayton Return-path: Received: from mx1.redhat.com ([209.132.183.28]:52795 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753316Ab2G2Ry6 (ORCPT ); Sun, 29 Jul 2012 13:54:58 -0400 Content-Disposition: inline In-Reply-To: <501577D1.7030205@googlemail.com> Sender: kvm-owner@vger.kernel.org List-ID: On Sun, Jul 29, 2012 at 06:50:09PM +0100, Chris Clayton wrote: > On 07/29/12 17:34, Avi Kivity wrote: > >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. > > > > > That commit isn't in qermu-kvm-1.1.1. > It is in kernel. > I'm testing a build with g_str_equal implemented in kvm.c and so far > I haven't had a crash in 6 invocations. That hasn't been possible > with vanilla qemu-kvm-1.1.{0,1}, but I'll do a few more, just to be > sure. > > Thanks for your help, Avi. -- Gleb.