|
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
|