Threading problems in WinDBus
Havoc Pennington
hp at redhat.com
Fri Jul 6 14:35:16 PDT 2007
Hmm. I messed around with dbus-cxx a bit, but I seem to have a different
version than yours or something, it doesn't look simple to get your test
case going on my system.
If you can make a simple compilable test case that is C or uses stock
dbus-c++ I can download, then I can poke at this without a large time
investment.
It looks an awful lot like thread locks just aren't present in your
program, though why that is I don't know, if threads are initialized.
It isn't surprising that verbose output prevents the bugs, since it
effectively puts in a bunch of pauses. The verbose output is much slower
than most other things libdbus would be doing.
You might want to break on the dbus thread functions like
_dbus_mutex_lock and step through them in a debugger, to see which
implementation is being used (_dbus_mutex_lock should end up calling
_dbus_pthread_mutex_lock on linux for example). This is just to be sure
there are locks at all, before debugging how the locking is messed up.
With that established another strategy is to add more and more
assertions to libdbus to try to break things earlier, to try and narrow
down the exact point where it goes wonky.
Havoc
More information about the dbus
mailing list