[Spice-devel] More on xspice + failure in net ping over vpn

Jeremy White jwhite at codeweavers.com
Fri May 4 09:36:55 PDT 2012


So I've probed more deeply after my naive misunderstanding
of the consequence of the EAGAIN.

I believe I am closer to the source of the problem; I also
believe the problem is more serious than I realized; it's likely to bite
anyone trying the xspice solution quite hard.

That is, in spiceqxl_main_loop.c in the qxl X driver, there
is a basic implementation of watch_add/watch_update_mask.
The watch stuff is vital to retrying sends when they don't
go out due to a blocking condition.

However, that implementation does not function fully.  It relies
on client activity on the X server to trigger a select polling
loop.  But when sending the large initial network ping packet,
we have no client activity, and we just hang.  The attached
patch 'improves' things, but I really have no sense as to whether
or not it would be a reliable solution.

I looked at trying to use the red_worker watch add stuff instead,
and I see that gets hairy.  You need the watches before you
have a channel; the red_worker stuff relies on having a channel
to hang it's stuff off of.

But I have to confess it feels right - we've got our own thread;
we created the socket, and do all the listens/accept - why don't we
do our own watching?

Cheers,

Jeremy
-------------- next part --------------
A non-text attachment was scrubbed...
Name: watch.diff
Type: text/x-patch
Size: 422 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/spice-devel/attachments/20120504/f968825d/attachment.bin>


More information about the Spice-devel mailing list