[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] Deadlock in /proc/xen/xenbus watch+read on 3.17+ (maybe earlier)
Hi, I've hit some deadlock in kernel xenstore client exposed via /proc/xen/xenbus. Steps to reproduce are simple: int main() { struct xs_handle *xs; xs = xs_open(0); xs_watch(xs, "domid", "token"); xs_read(xs, 0, "name", NULL); return 0; } xs_watch internally creates new thread, which uses read to wait for the watch. And in the same time, the program tries to read some value, but actually it hangs at sending the command (before even sending a path to be read). Strace gives this (simplified for readability): [pid 2494] write(3, "\4\0\0\0\0\0\0\0\0\0\0\0\f\0\0\0", 160 = 16 [pid 2494] write(3, "domid\0", 6) = 6 [pid 2494] write(3, "token\0", 6) = 6 [pid 2495] read(3, <unfinished ...> [pid 2494] futex(0x71c0d4, FUTEX_WAIT_PRIVATE, 1, NULL <unfinished ...> [pid 2495] <... read resumed> "\17\0\0\0\377\377\377\377\220~\255\27\f\0\0\0", 16) = 16 [pid 2495] read(3, "domid\0token\0", 12) = 12 [pid 2495] read(3, "\4\0\0\0\0\0\0\0\0\0\0\0\3\0\0\0", 16) = 16 [pid 2495] read(3, "OK\0", 3) = 3 [pid 2495] futex(0x71c0d4, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x71c0d0, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1} <unfinished ...> [pid 2494] <... futex resumed> ) = 0 [pid 2495] <... futex resumed> ) = 1 [pid 2494] futex(0x71c0a8, FUTEX_WAIT_PRIVATE, 2, NULL <unfinished ...> [pid 2495] futex(0x71c0a8, FUTEX_WAKE_PRIVATE, 1 <unfinished ...> [pid 2494] <... futex resumed> ) = -1 EAGAIN (Resource temporarily unavailable) [pid 2495] <... futex resumed> ) = 0 [pid 2494] futex(0x71c0a8, FUTEX_WAKE_PRIVATE, 1 <unfinished ...> [pid 2495] read(3, <unfinished ...> [pid 2494] <... futex resumed> ) = 0 [pid 2494] rt_sigaction(SIGPIPE, {SIG_DFL, [], SA_RESTORER, 0x7fc78c1488f0}, NULL, 8) = 0 [pid 2494] rt_sigaction(SIGPIPE, {SIG_IGN, [], SA_RESTORER, 0x7fc78c1488f0}, {SIG_DFL, [], SA_RESTORER, 0x7fc78c1488f0}, 8) = 0 [pid 2494] write(3, "\2\0\0\0\0\0\0\0\0\0\0\0\5\0\0\0", 16 And thats all - 2494 is waiting on write, 2495 is waiting on read. On 3.12.x it is working. On 3.17.0 and 3.18.7 it is broken. I haven't checked versions in the middle. Any ideas? -- Best Regards, Marek Marczykowski-GÃrecki Invisible Things Lab A: Because it messes up the order in which people normally read text. Q: Why is top-posting such a bad thing? Attachment:
pgpdUs3AAUNGg.pgp _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |