On Thu, Mar 31, 2011 at 01:35:31AM +0400, malc wrote:
> On Wed, 30 Mar 2011, Peter Maydell wrote:
> 
> > On 15 March 2011 11:56, Gleb Natapov <g...@redhat.com> wrote:
> > > Currently when rogue script kills QEMU process (using TERM/INT/HUP
> > > signal) it looks indistinguishable from system shutdown. Lets report
> > > that QEMU was killed and leave some clues about the killer identity.
> > 
> > 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);
> > 
> > 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.
> > 
> 
> Maybe using SDL_INIT_NOPARACHUTE is worth doing?
> 
We do it already, but SDL mangles signal handlers anyway. The funny
thing is that parachute code actually correctly use sigaction when
available.

--
                        Gleb.

Reply via email to