I think this patch doesn't fix my issue. For more details, please see Gonglei's reply. https://lists.gnu.org/archive/html/qemu-devel/2018-05/msg06296.html
> -----邮件原件----- > 发件人: Marc-André Lureau [mailto:marcandre.lur...@gmail.com] > 发送时间: 2018年5月29日 17:11 > 收件人: linzhecheng <linzhech...@huawei.com> > 抄送: QEMU <qemu-devel@nongnu.org>; Paolo Bonzini > <pbonz...@redhat.com>; wangxin (U) <wangxinxin.w...@huawei.com> > 主题: Re: [Qemu-devel] [PATCH] socket: dont't free msgfds if error equals > EAGAIN > > Hi > > On Tue, May 29, 2018 at 4:52 AM, linzhecheng <linzhech...@huawei.com> > wrote: > > Signed-off-by: linzhecheng <linzhech...@huawei.com> > > > > diff --git a/chardev/char-socket.c b/chardev/char-socket.c index > > 159e69c3b1..17519ec589 100644 > > --- a/chardev/char-socket.c > > +++ b/chardev/char-socket.c > > @@ -134,8 +134,8 @@ static int tcp_chr_write(Chardev *chr, const uint8_t > *buf, int len) > > s->write_msgfds, > > s->write_msgfds_num); > > > > - /* free the written msgfds, no matter what */ > > - if (s->write_msgfds_num) { > > + /* free the written msgfds in any cases other than errno==EAGAIN */ > > + if (EAGAIN != errno && s->write_msgfds_num) { > > g_free(s->write_msgfds); > > s->write_msgfds = 0; > > s->write_msgfds_num = 0; > > -- > > It is already fix since v2.12: > > commit c863fdec6aff6b5a4ca8fff1537b80d9f8b97726 > Author: Daniel P. Berrangé <berra...@redhat.com> > Date: Thu Feb 22 12:13:51 2018 +0000 > > chardev: fix handling of EAGAIN for TCP chardev > > > 2.12.2.windows.2 > > > > > > > > > > -- > Marc-André Lureau