From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58273) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1X6kU7-0002ge-Fc for qemu-devel@nongnu.org; Mon, 14 Jul 2014 13:56:24 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1X6kU2-0006y4-5Q for qemu-devel@nongnu.org; Mon, 14 Jul 2014 13:56:19 -0400 Received: from mx1.redhat.com ([209.132.183.28]:61409) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1X6kU1-0006xO-To for qemu-devel@nongnu.org; Mon, 14 Jul 2014 13:56:14 -0400 Date: Mon, 14 Jul 2014 13:56:06 -0400 From: Luiz Capitulino Message-ID: <20140714135606.0a1bed38@redhat.com> In-Reply-To: <87oawwclh8.fsf@blackfin.pond.sub.org> References: <1405054738-18522-1-git-send-email-liangx.z.li@intel.com> <87oawwclh8.fsf@blackfin.pond.sub.org> MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH] qemu-char: Fixed the bug lead to dead lock List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Markus Armbruster Cc: Liliang , Paolo Bonzini , Fam Zheng , qemu-devel@nongnu.org, aliguori@amazon.com On Fri, 11 Jul 2014 11:07:15 +0200 Markus Armbruster wrote: > Cc'ing folks involved in the flawed commit. > > Liliang writes: > > > From: Li Liang > > > > This bug was introduced in the commit 9005b2a7589540a3733b3abdcfbccfe7746cd1a1, > > it will cause deadlock when create a vm with the parameter "-monitor pty" and > > then try to read from /dev/pts/x. > > > > Signed-off-by: Li Liang > > Long lines in commit message, and the subject isn't as informative as it > could be. Suggest something like: > > qemu-char: Fix deadlock in pty character device > > To reproduce, run with "-monitor pty", then try to read from the > slave /dev/pts/FOO created for it. > > Broken in commit 9005b2a. Paolo posted a pull request today with a fix for this issue included: [PULL 2/5] qemu-char: fix deadlock with "-monitor pty" Thanks Paolo! > > > --- > > qemu-char.c | 4 +++- > > 1 file changed, 3 insertions(+), 1 deletion(-) > > > > diff --git a/qemu-char.c b/qemu-char.c > > index 55e372c..55cdded 100644 > > --- a/qemu-char.c > > +++ b/qemu-char.c > > @@ -1103,9 +1103,11 @@ static gboolean pty_chr_timer(gpointer opaque) > > s->timer_tag = 0; > > if (!s->connected) { > > /* Next poll ... */ > > + qemu_mutex_unlock(&chr->chr_write_lock); > > pty_chr_update_read_handler_locked(chr); > > + } else { > > + qemu_mutex_unlock(&chr->chr_write_lock); > > } > > - qemu_mutex_unlock(&chr->chr_write_lock); > > return FALSE; > > } >