qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Paolo Bonzini <pbonzini@redhat.com>
To: Wen Congyang <wency@cn.fujitsu.com>
Cc: "Andreas Färber" <andreas.faerber@web.de>,
	qemu-devel <qemu-devel@nongnu.org>,
	"Luiz Capitulino" <lcapitulino@redhat.com>
Subject: [Qemu-devel] Re: [PATCH v2] disable sigcld handling before calling pclose()
Date: Wed, 05 Jan 2011 10:21:50 +0100	[thread overview]
Message-ID: <4D24382E.8080903@redhat.com> (raw)
In-Reply-To: <4D102795.9040107@cn.fujitsu.com>

On 12/21/2010 05:05 AM, Wen Congyang wrote:
> When I use the command 'virsh save' to save the domain state,
> I receive the following error message:
> operation failed: Migration unexpectedly failed.
>
> I debug the qemu by adding some printf(), and find the function
> pclose() returns -1.
>
> I use strace to trace qemu, the log is as the following:
> ======
> close(17)                               = 0
> --- SIGCHLD (Child exited) @ 0 (0) ---
> wait4(-1, NULL, WNOHANG, NULL)          = 22016
> rt_sigreturn(0)                         = 0
> wait4(22016, 0x7fff7f1034fc, 0, NULL)   = -1 ECHILD (No child processes)
> ======
>
> We wait the child twice: one is in signal SIGCHLD handling and the other
> one is in pclose().
>
> We should disable sigcld handling before calling pclose().

I wondered whether we need SIGCHLD handling at all.  fork is called only 
from:

- xen_domain_watcher in hw/xen_domainbuild.c

- launch_script in net/tap.c

- SLIRP's fork_exec ("mini inetd")

For the first, the child will always "outlive" the parent.  For the 
second, we do waitpid in the function.  So SLIRP is the only real user 
of the SIGCHLD handler and in fact this:

http://www.google.com/codesearch/p?hl=en#tGk9u3ZS0cw/pub/Linux/system/network/serial/slirp-1.0.9.tar.gz|s3yKHVXI6eg/slirp-1.0.9/src/main.c

suggests that the handler came from there (search for do_wait).  Would 
anybody object to removing the support for Samba under SLIRP and all the 
resulting cruft?

Paolo

  parent reply	other threads:[~2011-01-05  9:21 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-12-09  3:41 [Qemu-devel] [PATCH] disable sigcld handling before calling pclose() Wen Congyang
2010-12-14  9:23 ` Wen Congyang
2010-12-20  1:25   ` Wen Congyang
2010-12-20  6:33     ` Andreas Färber
2010-12-21  2:44       ` Wen Congyang
2010-12-21  4:05       ` [Qemu-devel] [PATCH v2] " Wen Congyang
2011-01-05  2:15         ` Wen Congyang
2011-01-05  9:21         ` Paolo Bonzini [this message]
2011-03-03  3:10         ` Wen Congyang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4D24382E.8080903@redhat.com \
    --to=pbonzini@redhat.com \
    --cc=andreas.faerber@web.de \
    --cc=lcapitulino@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=wency@cn.fujitsu.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).