From: Zoltan B. <zol...@gm...> - 2009-09-09 06:15:03
|
Hello Andreas, Thanks for your kind response. It seems like the GUI library(wxWidgets on Linux, wxGTK build) I'm using is causing some problems(not sure). Could you please tell me if my dbus-c++ usage is correct from the code listed below? Maybe I missed to register some callbacks, which I have to handle, or passing method parameters incorrectly, or anything else. GUI library throws me an assert, which has to deal with even notifiers. I tried to use dbus-c++ in console application, and UnMount worked just fine. Here is the stack trace from Eclipse IDE, when I try to call invoke_method. I don't think it will be any helpful, since it's trace when GUI is about to die. Thread [1] (Suspended) 22 pthread_mutex_unlock() 0x00ab51a0 21 _dl_open() 0x008f69eb 20 do_dlopen() 0x00a22952 19 _dl_catch_error() 0x008f2806 18 __libc_dlopen_mode() 0x00a22b15 17 init() 0x009fb858 16 pthread_once() 0x00ab73f0 15 backtrace() 0x009fba45 14 wxStackWalker::SaveStack() /home/zoltan/Development/wx/src/unix/stackwalk.cpp:169 0x083edb79 13 wxGUIAppTraits::ShowAssertDialog() /home/zoltan/Development/wx/src/gtk/utilsgtk.cpp:379 0x08216dd8 12 ShowAssertDialog() /home/zoltan/Development/wx/src/common/appbase.cpp:836 0x08363cd0 11 wxAppConsole::OnAssertFailure() /home/zoltan/Development/wx/src/common/appbase.cpp:445 0x08364042 10 wxApp::OnAssertFailure() /home/zoltan/Development/wx/src/gtk/app.cpp:556 0x0820556f 9 wxOnAssert() /home/zoltan/Development/wx/src/common/appbase.cpp:711 0x08363df7 8 wxEventLoop::~wxEventLoop() /home/zoltan/Development/wx/src/gtk/evtloop.cpp:64 0x0830fedf 7 wxEventLoopPtr::~wxEventLoopPtr() /home/zoltan/Development/wx/src/common/appcmn.cpp:74 0x0826f6d5 6 wxEventLoopTiedPtr::~wxEventLoopTiedPtr() /home/zoltan/Development/wx/src/common/appcmn.cpp:74 0x082705f1 5 wxAppBase::MainLoop() /home/zoltan/Development/wx/src/common/appcmn.cpp:312 0x0826fe7a 4 wxAppBase::OnRun() /home/zoltan/Development/wx/src/common/appcmn.cpp:367 0x0826f8b3 3 wxEntry() /home/zoltan/Development/wx/src/common/init.cpp:460 0x08395273 2 wxEntry() /home/zoltan/Development/wx/src/common/init.cpp:472 0x08395479 1 main() /home/zoltan/Development/DBusCPPTest/src/main_app.cpp:42 0x0808438b Thanks. br, -zoltan. On Wed, Sep 9, 2009 at 1:35 AM, Andreas Volz<li...@br...> wrote: > Am Tue, 8 Sep 2009 18:34:11 +0500 schrieb Zoltan Bencik: > > Hello Zoltan, > > I suggest you should compile dbus-c++ with debug option (--configure > --enable-debug), your application with -O0 -ggdb and run it in gdb. > > This would tell us all a lot of useful information. > > regards > Andreas > >> Hello All, >> >> I'm trying to mount and unmount devices through dbus-c++ binding, >> using DeviceKit.Disks.Device interface methods. >> While trying to unmount device, I get a 'SIGTRAP' signal. >> Can anybody show me what I'm doing wrong in this code? >> >> Thanks, any help is very appreciated. >> >> >> // Proxy implementation >> DisksDeviceProxy::DisksDeviceProxy(DBus::Connection &connection, const >> char *object_path) >> : DBus::InterfaceProxy("org.freedesktop.DeviceKit.Disks"), >> DBus::ObjectProxy(connection, object_path, >> "org.freedesktop.DeviceKit.Disks.Device") >> { >> } >> >> // Mount device >> void DisksDeviceProxy::MountDevice(const char *fstype, >> std::vector<std::string> &options) >> { >> ::DBus::CallMessage call; >> ::DBus::MessageIter wi = call.writer(); >> >> wi << fstype; >> wi << options; >> call.member("FilesystemMount"); >> ::DBus::Message ret = invoke_method (call); >> ::DBus::MessageIter ri = ret.reader(); >> } >> >> // Unmount device >> void DisksDeviceProxy::UnMountDevice(std::vector<std::string> >> &options) { >> ::DBus::CallMessage call; >> ::DBus::MessageIter wi = call.writer(); >> >> wi << options; >> call.member("FilesystemUnmount"); >> ::DBus::Message ret = invoke_method (call); // Signaled >> SIGTRAP right here ::DBus::MessageIter ri = ret.reader(); >> } >> >> And here is the code, how I'm trying to unmount device: >> //-- START >> DBus::BusDispatcher dispatcher; >> DBus::default_dispatcher = &dispatcher; >> >> DBus::Connection conn = DBus::Connection::SystemBus(); >> >> DisksDeviceProxy devkit(conn, >> "/org/freedesktop/DeviceKit/Disks/devices/sdb1"); // for now, just >> hard coded value of my USB device >> std::vector<std::string>options; >> devkit.UnMountDevice(options); >> //-- END >> >> ------------------------------------------------------------------------------ >> Let Crystal Reports handle the reporting - Free Crystal Reports 2008 >> 30-Day trial. Simplify your report design, integration and deployment >> - and focus on what you do best, core application coding. Discover >> what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july >> _______________________________________________ >> dbus-cplusplus-devel mailing list >> dbu...@li... >> https://lists.sourceforge.net/lists/listinfo/dbus-cplusplus-devel >> > > ------------------------------------------------------------------------------ > Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day > trial. Simplify your report design, integration and deployment - and focus on > what you do best, core application coding. Discover what's new with > Crystal Reports now. http://p.sf.net/sfu/bobj-july > _______________________________________________ > dbus-cplusplus-devel mailing list > dbu...@li... > https://lists.sourceforge.net/lists/listinfo/dbus-cplusplus-devel > |