Hi,
I was able to solve some dbus issues using the a later version of DBUS, but something are still left. I'll sketch out my application, it is GPL, so the source can be checked. I have: handler_clusterstats handler_virt handler_avahi Both are modules of the Cherokee webserver and all have access to avahi by a threaded poll mechanism. Now if I combine handler_clusterstats and handler_virt chaos occurs. Please realise that this code is located in different modules and has its own threading stuff. Cherokee Web Server 0.9.0b1942 (Sep 4 2008): Listening on port 80, TLS disabled, IPv6 enabled, using epoll, 1024 fds system limit, max. 505 connections, 40 threads, 12 connections per thread, standard scheduling policy 13320: assertion failed "(real)->max_length >= 0" file "dbus-string.c" line 468 function _dbus_string_get_const_data /usr/lib/libdbus-1.so.3 [0x2b20e2d771a8] /usr/lib/libdbus-1.so.3 [0x2b20e2d73336] /usr/lib/libdbus-1.so.3 [0x2b20e2d69af9] /usr/lib/libdbus-1.so.3 [0x2b20e2d6cda4] /usr/lib/libdbus-1.so.3 [0x2b20e2d6ae05] /usr/lib/libdbus-1.so.3 [0x2b20e2d50879] /usr/lib/libdbus-1.so.3(dbus_message_get_reply_serial+0x51) [0x2b20e2d56385] /usr/lib/libdbus-1.so.3 [0x2b20e2d4a711] /usr/lib/libdbus-1.so.3 [0x2b20e2d65225] /usr/lib/libdbus-1.so.3 [0x2b20e2d66182] /usr/lib/libdbus-1.so.3 [0x2b20e2d66427] /usr/lib/libdbus-1.so.3 [0x2b20e2d64d32] /usr/lib/libdbus-1.so.3 [0x2b20e2d4a4cd] /usr/lib/libdbus-1.so.3(dbus_watch_handle+0x9f) [0x2b20e2d67abe] /usr/lib/libavahi-common.so.3(avahi_simple_poll_dispatch+0xbb) [0x2b20e2f9b3cb] /usr/lib/libavahi-common.so.3(avahi_simple_poll_loop+0x1d) [0x2b20e2f9b92d] /usr/lib/libavahi-common.so.3 [0x2b20e2f9c2ce] /lib/libpthread.so.0 [0x2b20dfa1c017] /lib/libc.so.6(clone+0x6d) [0x2b20e0242fdd] Program received signal SIGABRT, Aborted. [Switching to Thread 0x41802950 (LWP 13325)] 0x00002b20e01a5235 in raise () from /lib/libc.so.6 (gdb) bt #0 0x00002b20e01a5235 in raise () from /lib/libc.so.6 #1 0x00002b20e01a6753 in abort () from /lib/libc.so.6 #2 0x00002b20e2d73351 in ?? () from /usr/lib/libdbus-1.so.3 #3 0x00002b20e2d69af9 in ?? () from /usr/lib/libdbus-1.so.3 #4 0x00002b20e2d6cda4 in ?? () from /usr/lib/libdbus-1.so.3 #5 0x00002b20e2d6ae05 in ?? () from /usr/lib/libdbus-1.so.3 #6 0x00002b20e2d50879 in ?? () from /usr/lib/libdbus-1.so.3 #7 0x00002b20e2d56385 in dbus_message_get_reply_serial () from /usr/lib/libdbus-1.so.3 #8 0x00002b20e2d4a711 in ?? () from /usr/lib/libdbus-1.so.3 #9 0x00002b20e2d65225 in ?? () from /usr/lib/libdbus-1.so.3 #10 0x00002b20e2d66182 in ?? () from /usr/lib/libdbus-1.so.3 #11 0x00002b20e2d66427 in ?? () from /usr/lib/libdbus-1.so.3 #12 0x00002b20e2d64d32 in ?? () from /usr/lib/libdbus-1.so.3 #13 0x00002b20e2d4a4cd in ?? () from /usr/lib/libdbus-1.so.3 #14 0x00002b20e2d67abe in dbus_watch_handle () from /usr/lib/libdbus-1.so.3 #15 0x00002b20e2f9b3cb in avahi_simple_poll_dispatch (s=0x67fcb0) at simple-watch.c:577 #16 0x00002b20e2f9b92d in avahi_simple_poll_loop (s=0x67fcb0) at simple-watch.c:638 #17 0x00002b20e2f9c2ce in thread (userdata=0x67fc60) at thread-watch.c:73 #18 0x00002b20dfa1c017 in start_thread () from /lib/libpthread.so.0 #19 0x00002b20e0242fdd in clone () from /lib/libc.so.6 #20 0x0000000000000000 in ?? () So here is one program that uses three (actually four) avahi clients at the same time running on three threads. I don't want to hack around this until I solve the current situation which looks as a bug. I have marked all critical sections after the thread is started with lock/unlock, except the sections that are part of a _callback. In all the above modules. The code seems to work with only handler_virt+handler_avahi or handler_clusterstats+handler_avahi but not all three together. The bug is triggered by registering and unregistering the specific service from the net. I have compiled dbus with debug support, otherwise it would just segv. Is there any way to debug this issue? Stefan _______________________________________________ avahi mailing list avahi@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/avahi