[Libguestfs] setpgid() before exec'ing qemu

Richard W.M. Jones rjones at redhat.com
Fri Mar 11 17:26:50 UTC 2011


On Fri, Mar 11, 2011 at 12:56:43PM +1100, Angus Salkeld wrote:
> Hi
> 
> I am writing a python test suite that uses oz (https://github.com/clalancette/oz)
> which uses libquestfs. I am simulating a small cloud and have some apps that need
> to talk to the guests.
> 
> All works really well until I needed to start another process.
> So I start a process then "oz" starts up a VM (it uses libquestfs)
> then when "oz" cleans up it calls libquestfs.kill_subprocess().
> At this point my test locks up.

As Chris says, any reason to be using kill_subprocess at all?  You can
just delete the handle which has the same effect (and is a much more
well-tested path).  Something like:

  del g

> A bacetrace of the python code is:
> #0  0x00000036fe80ef1e in waitpid () from /lib64/libpthread.so.0
> #1  0x0000003629c0df7f in guestfs_close () from /usr/lib64/libguestfs.so.0
> then a mess of python stuff
> 
> If I attach to it with strace it shows:
> wait4(0,
> 
> It looks like libguestfs's children are already dead
> pstree 13107
> python─┬─cped───3*[{cped}]
>        └─qpidd───9*[{qpidd}]
> 
> so it's seems like it's waiting on my process to die.
> 
> So I changed the oz code to call close (in python "del obj") and all is well,
> however I was looking in libquestfs code and saw:
> #if 0
>     /* Set up a new process group, so we can signal this process
>      * and all subprocesses (eg. if qemu is really a shell script).
>      */
>    setpgid (0, 0);
> #endif
> 
> Any reason this is "if def'ed" out?
> this was done in commit 88f69eb03160a62d38 
> I was thinking this might prevent my problem from occuring in the
> first place?

I don't know why exactly waitpid isn't working, but I doubt it's
anything to do with the (lack of) a process group.

Are you using a qemu wrapper script?

Rich.

-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
libguestfs lets you edit virtual machines.  Supports shell scripting,
bindings from many languages.  http://libguestfs.org




More information about the Libguestfs mailing list