|
|
|
|
|
|
|
|
|
|
xen-devel
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
|
|
|
|
|