[ovirt-devel] virt-v2v become zombie via python cpopen on error

Nir Soffer nsoffer at redhat.com
Wed Mar 30 11:28:41 UTC 2016


On Wed, Mar 30, 2016 at 1:36 PM, Michal Skrivanek
<michal.skrivanek at redhat.com> wrote:
>
>> On 30 Mar 2016, at 11:49, Richard W.M. Jones <rjones at redhat.com> wrote:
>>
>> On Wed, Mar 30, 2016 at 12:19:35PM +0300, Shahar Havivi wrote:
>>> Hi,
>>>
>>> We encounter a problem in VDSM project that virt-v2v become zombie task while
>>> importing vm from vmware.
>>> When virt-v2v is in 'copy disk' mode and we someone deletes the vm at vmware
>>> the process hang in read() method,
>>> I am pretty sure that its not virt-v2v problem because when I run it from the
>>> shell virt-v2v exit with an error, still maybe someone have an idea....
>>>
>>> I wrote a small python script that encounter the problem:
>>>
>>> ----------------------------------------------------------------------------
>>> from cpopen import CPopen
>>>
>>> env = {'LIBGUESTFS_BACKEND': 'direct'}
>>> cmd = ['/usr/bin/virt-v2v', '-ic',
>>>       'vpx://....', '-o',
>>>       'local', '-os', '/tmp', '-of', 'raw', '-oa', 'sparse',
>>>       '--password-file', '/tmp/passwd', '--machine-readable', 'bbb']
>>> p = CPopen(cmd, env=env)
>>> while p.returncode is None:

p.returncode just return the instance variable, there is no wait() involved.

The right way:

    while p.poll() is None:
        ...

p.returncode calling wait is non-standard feature in vdsm AsyncProc
wrapper. This is
the object used by v2v vdsm module, so there accessing p.returncode does call
p.poll().

These non-standard apis will be removed from vdsm, please do not use them.

>>>    c = p.stdout.read(1)
>>>    print c
>>> ----------------------------------------------------------------------------
>>
>> An actual zombie task?  That would indicate that the parent process
>> (your Python program) wasn't doing a wait system call.
>>
>> I downloaded the cpopen-1.4 program, and it doesn't appear to call any
>> of the wait*(2) system calls anywhere, so that could be the problem.
>
> I suppose the cpopen parameters are not alright…I’m sure vdsm developers can help with that.
>
>>
>> Rich.
>>
>> --
>> Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
>> Read my programming and virtualization blog: http://rwmj.wordpress.com
>> virt-p2v converts physical machines to virtual machines.  Boot with a
>> live CD or over the network (PXE) and turn machines into KVM guests.
>> http://libguestfs.org/virt-v2v
>
> _______________________________________________
> Devel mailing list
> Devel at ovirt.org
> http://lists.ovirt.org/mailman/listinfo/devel



More information about the Devel mailing list