DBusGMethodInvocation is null on i386, works on x86_64
Braden McDaniel
braden at endoframe.com
Thu Oct 23 23:56:16 PDT 2008
I'm observing a situation where the DBusGMethodInvocation pointer passed
to the implementation of a remote call is null on i386; but the same
code works as expected on x86_64.
I have the following XML:
<node name="/org/openvrml/BrowserFactory">
<interface name="org.openvrml.BrowserFactory">
<method name="CreateControl">
<annotation name="org.freedesktop.DBus.GLib.Async" value="true" />
<arg type="s" name="host_name" direction="in" />
<arg type="o" name="host_object_path" direction="in" />
<arg type="t" name="host_id" direction="in" />
<arg type="b" name="expect_initial_stream" direction="in" />
<arg type="o" direction="out">
<annotation name="org.freedesktop.DBus.GLib.ReturnVal" value=""/>
</arg>
</method>
</interface>
</node>
This is implemented like so:
gboolean
openvrml_xembed_browser_factory_create_control(
OpenvrmlXembedBrowserFactory * control_factory,
const char * host_name,
const char * host_obj_path,
guint host_id,
gboolean expect_initial_stream,
DBusGMethodInvocation * context)
{
...
char * sender = dbus_g_method_get_sender(context);
...
}
On x86_64, this seems to work just fine. But on i386, context is null
and the call to dbus_g_method_get_sender results in a segfault.
I'm using D-Bus 1.2.4.
--
Braden McDaniel e-mail: <braden at endoframe.com>
<http://endoframe.com> Jabber: <braden at jabber.org>
More information about the dbus
mailing list