[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] "xm save" trouble -- deadlock?



On Tue, Nov 01, 2005 at 06:15:27PM +0100, Gerd Knorr wrote:

> >xend in turn doesn't read from the pipe but is waiting for some lock:
> >
> >  master-xen root /vm/ttylinux# strace -p6567
> >  Process 6567 attached - interrupt to quit
> >  futex(0x8087370, FUTEX_WAIT, 0, NULL <unfinished ...>
> >  Process 6567 detached
> 
> Oh, xend is multithreaded:
> 
>   master-xen root /vm/ttylinux# ls /proc/6567/task
>   .  ..  6567  6568  6569  6570  6571  6581  7977
> 
> 7977 seems to be responsible for the xc_save and does this:
> 
>   master-xen root /vm/ttylinux# strace -p7977
>   Process 7977 attached - interrupt to quit
>   read(20,  <unfinished ...>
>   Process 7977 detached
> 
> fd 20 is the other end of the *stdout* pipe, whereas xc_save writes 
> stuff to *stderr*.  Hmm.  Maybe xend causes the deadlock by simply 
> reading from the wrong file handle?

The code that does this is in XendCheckpoint.py:forkHelper.  It's using
select.poll() and file.readline() to read from both the stdout and the
stderr.  This is a pretty daft thing to do -- there's definitely potential for
deadlock here.

I'll rewrite this to use a separate thread to pull the data from stderr, which
should solve the problem.

Thanks for your diagnostic efforts,

Ewan.

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.