[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] libxenstore: fix threading bug which cause xend startup hang
On Fri, 2010-09-10 at 17:58 +0100, Ian Jackson wrote: > 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 Doesn't the call to pipe(2) in: if ((h->watch_pipe[0] == -1) && (pipe(h->watch_pipe) != -1)) do it? > (and care should be taken that locking is > appropriate, which needs some thought). It seems to only be accessed under watch_mutex, apart from get_handle() xs_daemon_destroy_postfork() and xs_daemon_close() which I guess are safe. Ian. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |