qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Gleb Natapov <gleb@redhat.com>
To: Peter Maydell <peter.maydell@linaro.org>
Cc: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCHv3] report that QEMU process was killed by a signal
Date: Wed, 30 Mar 2011 21:04:33 +0200	[thread overview]
Message-ID: <20110330190433.GE7741@redhat.com> (raw)
In-Reply-To: <AANLkTin72O3NToaTqcaEsMkjQ5W0mpz4EzQ74ryaVxSB@mail.gmail.com>

On Wed, Mar 30, 2011 at 07:53:41PM +0100, Peter Maydell wrote:
> On 30 March 2011 19:43, Gleb Natapov <gleb@redhat.com> wrote:
> > On Wed, Mar 30, 2011 at 07:39:31PM +0100, Peter Maydell wrote:
> >> Unfortunately this patch causes qemu to segfault when killed
> >> via ^C (at least on my Ubuntu maverick system). This is because
> >> it registers a signal handler with sigaction, but then later
> >> the SDL library is initialised and it reinstalls our handler
> >> with plain old signal:
> >>
> >>         ohandler = signal(SIGINT, SDL_HandleSIG);
> >>         if ( ohandler != SIG_DFL )
> >>                 signal(SIGINT, ohandler);
> >>
> > I fixed this in SDL upstream.
> 
> Cool, but we can't rely on the SDL we're linked against being
> a bugfixed version.
> 
> >> This is clearly buggy but on the other hand SDL is pretty widely
> >> deployed and it's the default QEMU video output method, so I think
> >> we need to work around it :-(
> >>
> >> The most straightforward fix is to get the signal number from
> >> argument one and not to bother printing the PID that killed us.
> >>
> > For debugging purposes pid is useful. We cam register signal handler
> > after SDL is initialized though (if waiting for SDL update is not an
> > option).
> 
> I'm not convinced about the utility of printing the pid, personally.
> Most programs get along fine without printing anything when
> they receive a terminal signal. However you're right that it should
Well qemu is a bit of special case. It is long running process that
takes huge amount of memory and, as suchm it becomes a target of various
monitoring script which, when configured incorrectly, start killing
perfectly valid guests. In addition killing of the guest looks exactly
like guest shutdown to management software because we call shutdow_request
in the signal handler.

> be straightforward enough to move the signal init. In fact it
> looks like this got broken somewhere along the line, the
> call to os_setup_signal_handling() is already preceded with a comment:
> 
>     /* must be after terminal init, SDL library changes signal handlers */
>     os_setup_signal_handling();
> 
> ...we just aren't actually after the terminal init any more :-(
> 
Exactly. This should do the trick (not tested).


diff --git a/vl.c b/vl.c
index 192a240..93aaccf 100644
--- a/vl.c
+++ b/vl.c
@@ -3148,9 +3148,6 @@ int main(int argc, char **argv, char **envp)
 
     cpu_synchronize_all_post_init();
 
-    /* must be after terminal init, SDL library changes signal handlers */
-    os_setup_signal_handling();
-
     set_numa_modes();
 
     current_machine = machine;
@@ -3206,6 +3203,9 @@ int main(int argc, char **argv, char **envp)
         break;
     }
 
+    /* must be after terminal init, SDL library changes signal handlers */
+    os_setup_signal_handling();
+
 #ifdef CONFIG_VNC
     /* init remote displays */
     if (vnc_display) {

--
			Gleb.

  reply	other threads:[~2011-03-30 19:04 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-03-15 11:56 [Qemu-devel] [PATCHv3] report that QEMU process was killed by a signal Gleb Natapov
2011-03-25 12:04 ` Gleb Natapov
2011-03-26 13:50   ` Blue Swirl
2011-03-26 13:55     ` Gleb Natapov
2011-03-26 14:12       ` Blue Swirl
2011-03-30 18:39 ` Peter Maydell
2011-03-30 18:43   ` Gleb Natapov
2011-03-30 18:53     ` Peter Maydell
2011-03-30 19:04       ` Gleb Natapov [this message]
2011-03-30 20:51         ` Peter Maydell
2011-03-31  9:04           ` Gleb Natapov
2011-03-30 18:49   ` Anthony Liguori
2011-03-30 18:51     ` Gleb Natapov
2011-03-30 21:35   ` malc
2011-03-31  5:35     ` Gleb Natapov

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=20110330190433.GE7741@redhat.com \
    --to=gleb@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    /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).