From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:41643) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bwuFa-0007Hq-H7 for qemu-devel@nongnu.org; Wed, 19 Oct 2016 13:02:02 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bwuFW-0004uV-Ka for qemu-devel@nongnu.org; Wed, 19 Oct 2016 13:01:58 -0400 Received: from mx1.redhat.com ([209.132.183.28]:44022) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1bwuFW-0004tY-FX for qemu-devel@nongnu.org; Wed, 19 Oct 2016 13:01:54 -0400 Received: from int-mx14.intmail.prod.int.phx2.redhat.com (int-mx14.intmail.prod.int.phx2.redhat.com [10.5.11.27]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 06094800B0 for ; Wed, 19 Oct 2016 17:01:52 +0000 (UTC) Date: Wed, 19 Oct 2016 18:01:49 +0100 From: "Dr. David Alan Gilbert" Message-ID: <20161019170148.GE2035@work-vm> References: <20161012191502.GC16187@work-vm> <20161018100409.GH4349@redhat.com> <20161018113202.GE2190@work-vm> <20161018120121.GN4349@redhat.com> <20161018132524.GG2190@work-vm> <20161018133528.GD12728@redhat.com> <20161018135213.GI2190@work-vm> <20161018140141.GF12728@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: Subject: Re: [Qemu-devel] chardev's and fd's in monitors List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Paolo Bonzini Cc: "Daniel P. Berrange" , qemu-devel@nongnu.org, armbru@redhat.com * Paolo Bonzini (pbonzini@redhat.com) wrote: > > > On 18/10/2016 16:01, Daniel P. Berrange wrote: > >> > > >> > I already use error_report's in places in migration threads of various > >> > types; I'm not sure if that's a problem. > > Unless those places are protected by the big qemu lock, that sounds > > not good. error_report calls into error_vprintf which checks the > > 'cur_mon' global "Monitor" pointer. This variable is updated at > > runtime - eg in qmp_human_monitor_command(), monitor_qmp_read(), > > monitor_read(), etc. So if migration threads outside the BQL are > > calling error_report() that could well cause problems. If you > > are lucky messages will merely end up going to stderr instead of > > the monitor, but in worst case I wouldn't be surprised if there > > is a crash possibility in some race conditions. > > Writes to chardevs *are* thread-safe (assuming qio_channel_create_watch > is thread-safe; it seems to be). Hmm that's useful (although it doesn't solve error_report because error_vprintf is racy itself). How deadlock safe is it? In particular imagine I've got another thread which is doing: take bql write to a chardev release bql if that chardev is registered on the main thread, will that deadlock? > Only reads aren't, in the sense that they require an event loop so they > use that event loop for serialization. Hmm OK. Dave > > Paolo -- Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK