This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
Home Products Support Community News


[Xen-devel] [PATCH] libxenstore: fix threading bug which cause xend star

To: xen-devel@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-devel] [PATCH] libxenstore: fix threading bug which cause xend startup hang
From: Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx>
Date: Fri, 10 Sep 2010 17:58:31 +0100
Delivery-date: Fri, 10 Sep 2010 10:00:12 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <19594.25262.241563.656571@xxxxxxxxxxxxxxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <19594.25262.241563.656571@xxxxxxxxxxxxxxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
I wrote:
> If a multithreaded caller creates a thread which calls xs_read_watch,
> before it has set any watches with xs_watch, the thread in
> xs_read_watch will enter read_message and sit reading the xenstored fd
> without the appropriate locks held.  Other threads can then
> concurrently read the xenstored fd, which naturally does not work very
> well.

While I was investigating this, I noticed that xs_fileno, which is
used by numerous applications to be able to select() waiting for
xenstore watches, always returns -1 and has done so since
7268:2144de6eabcc "Make libxenstore thread-safe" in October 2008.

This is because nothing ever creates the pipe implied by watch_pipe.
xs_fileno should do so (and care should be taken that locking is
appropriate, which needs some thought).

I won't send a patch for this right away as I want to see whether my
deadlock bugfix works, first.


Xen-devel mailing list