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.