[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] A small issue with multiple xs_daemon_open
Hello, I am experiencing a problem when opening two simultaneous connections (in a single process) to xenstored via xs_daemon_open(). I would think such an operation is supported and should work (no static variables in libxenstore are involved); is it a correct assumption ? If so, the issue should be fixed. The environment is xen-3.4.3, 2.6.32.9-xxx pvops dom0. The order of operations is xs1=xs_daemon_open() xs_watch(xs1,...) xs_read_watch(xs1,...) xs2=xs_daemon_open() xs_read(xs2,...) xs_daemon_close(xs2) xs_read(xs1,...) xs_daemon_close(xs1) There seems to be some sort of a race when calling the second xs_daemon_close() - sometimes it hangs infinitely. Backtrace: (gdb) info threads 2 Thread 0x7fe64697c710 (LWP 4154) 0x00007fe646b8dc44 in __lll_lock_wait() from /lib64/libpthread.so.0 * 1 Thread 0x7fe6482d2700 (LWP 4153) 0x00007fe646b87bfd in pthread_join () from /lib64/libpthread.so.0 (gdb) bt #0 0x00007fe646b87bfd in pthread_join () from /lib64/libpthread.so.0 #1 0x00007fe647776fdc in xs_daemon_close () from /usr/lib64/libxenstore.so.3.0 #2 0x000000000040660a in peer_client_init () #3 0x0000000000405808 in main () (gdb) thread 2 [Switching to thread 2 (Thread 0x7fe64697c710 (LWP 4154))]#0 0x00007fe646b8dc44 in __lll_lock_wait () from /lib64/libpthread.so.0 (gdb) bt #0 0x00007fe646b8dc44 in __lll_lock_wait () from /lib64/libpthread.so.0 #1 0x00007fe646b88f15 in _L_lock_1017 () from /lib64/libpthread.so.0 #2 0x00007fe646b88de7 in pthread_mutex_lock () from /lib64/libpthread.so.0 #3 0x00007fe647775db8 in ?? () from /usr/lib64/libxenstore.so.3.0 #4 0x00007fe647775e3c in ?? () from /usr/lib64/libxenstore.so.3.0 #5 0x00007fe646b86a3a in start_thread () from /lib64/libpthread.so.0 #6 0x00007fe64729967d in clone () from /lib64/libc.so.6 #7 0x0000000000000000 in ?? () (gdb) You can see the code for peer_client_init() at http://qubes-os.org/gitweb/?p=rafal/gui.git;a=blob;f=gui-common/txrx-vchan.c;h=afc691e922edce61683e46203fd9597d029052d3;hb=93f0509b791f8fc433675c58c81f6ea9469d2c91#l168 it calls libvchan_client_init, code at http://qubes-os.org/gitweb/?p=rafal/gui.git;a=blob;f=vchan/vchan/init.c;h=4a3da4f22907445160a6fe3db9ed357f89ebc301;hb=93f0509b791f8fc433675c58c81f6ea9469d2c91#l212 note that libvchan_client_init calls xs_daemon_open/close by itself, too. Naturally it is posible to change peer_client_init() to not call xs_daemon_open twice, but the title issue itself remains. Regards, Rafal Wojtczuk Principal Researcher Invisible Things Lab, Qubes-os project _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |