From: Dana G. <dan...@gm...> - 2010-05-01 22:15:48
|
I'm trying to use the DBus-C++ libraries to talk to bluez, and I'm finding that the dbus-c++ library keeps hanging on some futex even after strace shows it successfully receiving all expected data. Sometimes it hangs on calling DBus::ObjectProxy()... and other times it hangs on calling GetProperties() for an object that was just constructed. I have attached a log of gdb and strace -- however, due to the "Heisenbug" behavior under gdb and strace, the two logs do not show the exact same hang. Most notably, strace itself seems to sometimes fix the behavior. Device::Device(DBus::Connection* connection, const ::DBus::Path& path, Adapter* adapter, Manager * manager, map < string, DBus::Variant> properties) : ::org::bluez::Device_proxy() , DBus::ObjectProxy(*connection, path, "org.bluez") <-- this is device.cpp, line 22. If anyone has any advice for how to fix this hang, I would greatly appreciate it. My libdbus-c++ package version is 0~20090907-1 on 64-bit Ubuntu Lucid -- but I've now also manually built and installed the "Unofficial GIT Variant" at git://gitorious.org/dbus-cplusplus/mainline.git . Additionally, does anyone know how to set a shorter timeout for method calls? The only "set" method I can find takes an undocumented, private "Timeout::Internal" class. Thanks for any help you can give. -- Dana |