[avahi] dbus issues, partially solved

Stefan de Konink avahi at ml.kinkrsoftware.nl
Sun Sep 7 15:20:15 PDT 2008


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


More information about the avahi mailing list