Crash processing g_object_new arguments



Does this backtrace suggest anything reasonably concrete to anyone here?

        #0  strchr () at ../sysdeps/x86_64/strchr.S:33
        #1  0x0000003834814e1d in IA__g_param_spec_pool_lookup (pool=0x6cc500, param_name=0x7fff00000000 
<Address 0x7fff00000000 out of bounds>, owner_type=140737085709488, walk_ancestors=1) at gparam.c:1053
        #2  0x00000038348122c7 in IA__g_object_new_valist (object_type=6785536, 
first_property_name=0x7fff00000000 <Address 0x7fff00000000 out of bounds>, var_args=0x7fffefa53250) at 
gobject.c:1287
        #3  0x00000038348126ac in IA__g_object_new (object_type=140737085709488, first_property_name=0x459479 
"control-host-proxy") at gobject.c:1060
        #4  0x000000000044125b in openvrml_xembed_browser_new (host_proxy=0x7fffe8006870, 
expect_initial_stream=0, dbus_thread_context=0x73ab40, gtk_thread_context=0x6ea5c0, host_name=0x7fffe8007800 
"org.openvrml.BrowserHost-18834", socket_id=0) at .././../src/openvrml-xembed/browser.cpp:378

Clearly the "<Address ... out of bounds>" looks fishy; but I'm just not
seeing what could be a problem there; and I'm wondering if gdb isn't
just messing with me.  The call site for openvrml_xembed_browser_new
looks like this:

        OpenvrmlXembedBrowser * const browser =
            OPENVRML_XEMBED_BROWSER(
                g_object_new(OPENVRML_XEMBED_TYPE_BROWSER,
                             "control-host-proxy", host_proxy,
                             "control-host-name", host_name,
                             "dbus-thread-context", dbus_thread_context,
                             "expect-initial-stream", expect_initial_stream,
                             0));

This started happening when I added the construction parameter
"control-host-name"; so I've been looking intently at my _class_init to
see if I botched something in the parameter specs; but I'm just not
seeing anything.  That code looks like this:

        GParamSpec * pspec =
            g_param_spec_object(
                "control-host-proxy",
                "BrowserHost proxy",
                "DBusGProxy for a BrowserHost",
                DBUS_TYPE_G_PROXY,
                GParamFlags(G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE));
        g_object_class_install_property(g_object_class,
                                        control_host_proxy_id,
                                        pspec);
        
        pspec =
            g_param_spec_string(
                "control-host-name",
                "BrowserHost name",
                "Well-known (nonunique) name for a BrowserHost",
                "",
                GParamFlags(G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE));
        g_object_class_install_property(g_object_class,
                                        control_host_name_id,
                                        pspec);
        
        pspec =
            g_param_spec_pointer(
                "dbus-thread-context",
                "D-Bus thread context",
                "GMainContext for the D-Bus connection thread",
                GParamFlags(G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE));
        g_object_class_install_property(g_object_class,
                                        dbus_thread_context_id,
                                        pspec);
        
        pspec =
            g_param_spec_boolean(
                "expect-initial-stream",
                "expect an initial stream",
                "The VrmlControl will be delivered an initial stream",
                false,
                GParamFlags(G_PARAM_CONSTRUCT_ONLY | G_PARAM_WRITABLE));
        g_object_class_install_property(g_object_class,
                                        expect_initial_stream_id,
                                        pspec);

Clues appreciated.

-- 
Braden McDaniel <braden endoframe com>




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]