[PATCH] virKillProcess [was Re: [libvirt] [PATCH 2/5] daemonize qemu processes]

Guido Günther agx at sigxcpu.org
Tue Jan 6 17:47:00 UTC 2009


On Mon, Jan 05, 2009 at 09:58:06AM +0000, Daniel P. Berrange wrote:
> On Mon, Dec 29, 2008 at 03:36:15PM +0100, Guido G?nther wrote:
> > On Mon, Dec 15, 2008 at 02:22:42PM +0100, Daniel Veillard wrote:
> > > On Mon, Dec 15, 2008 at 11:21:20AM +0000, Daniel P. Berrange wrote:
> > > > On Fri, Dec 12, 2008 at 07:26:32PM +0100, Guido G?nther wrote:
> > > > > +    if (kill(vm->pid, SIGTERM) < 0)
> > > > > +        qemudLog(QEMUD_ERROR, _("Failed to send SIGTERM to %s (%d): %s\n"),
> > > > > +                 vm->def->name, vm->pid, strerror(errno));
> > > > 
> > > > We should add a guard around all the kill() statements for
> > > > 
> > > >   if (vm->pid > 1)
> > > >      kill..
> > > > 
> > > > One of the bugs I found when doing the LXC/UML drivers is that when relying 
> > > > on an external PID file, some things can go wrong in unexpected ways that
> > > > just don't happen when getting the PID straight back from fork. This often
> > > > ended up with vm->pid being -1, 0 with horrific results - 
> > > > 
> > > >    "If  pid equals -1, then sig is sent to every process for which the calling
> > > >     process has permission to send signals, except for process 1 (init)"
> > > > 
> > > > Yes, I killed every single process on my dev machine several times before
> > > > discovering this isues :-)
> > > 
> > >   This call for an utility function
> > >     int virKillProcess(pid_t pid, int sig)
> > > call checking for this, could also help on debugging/logging
> > O.k. to apply the attached version of virKillProcess? I'm already using
> > this in the libvirtd restart patches.
> 
> ACK
Applied. 
 -- Guido




More information about the libvir-list mailing list