! Please note that this is a snapshot of our old Bugzilla server, which is read only since May 29, 2020. Please go to gitlab.xfce.org for our new server !
xfwm4 segfaulting on users first login.
Status:
RESOLVED: WORKSFORME
Product:
Libxfce4ui
Component:
General

Comments

Description George McCollister 2012-02-07 20:30:31 CET
If I logout of xfce and return to gdm then remotely remove my users home directory and login as that user again xfwm4 core dumps. If I logout and log back in again everything is fine (as long as I dont delete the user's home dir again).

In xfce-shortcuts-provider.c:290 (xfce_shortcuts_provider_property_changed) provider->priv->custom_base_property is NULL which is causing the segfault. I'm not sure why it is NULL, but maybe you should check because for some reason in my case it is NULL. xfce4-settings seems to be core dumping at the same time. Maybe it is happening in the same location?


Core was generated by `xfwm4'.
Program terminated with signal 11, Segmentation fault.
#0  __strlen_sse2 () at ../sysdeps/i386/i686/multiarch/strlen-sse2.S:46
46              cmpb    $0, (%edx)

(gdb) bt full
#0  __strlen_sse2 () at ../sysdeps/i386/i686/multiarch/strlen-sse2.S:46
No locals.
#1  0xb6e1d093 in g_str_has_prefix (str=0x8101dc8 "/providers", prefix=0x0) at gstrfuncs.c:2949
        str_len = 10
        prefix_len = <value optimized out>
#2  0xb7801cea in xfce_shortcuts_provider_property_changed (channel=0x80f4e60, property=0x8101dc8 "/providers", value=0x8101dd8, provider=0x80f4e40)
    at xfce-shortcuts-provider.c:290
        shortcut = <value optimized out>
        __PRETTY_FUNCTION__ = "xfce_shortcuts_provider_property_changed"
#3  0xb77f9caf in _xfconf_marshal_VOID__STRING_BOXED (closure=0x8102508, return_value=0x0, n_param_values=3, param_values=0x80b5458, invocation_hint=0xbfd61e80, 
    marshal_data=0x0) at xfconf-marshal.c:123
        callback = 0xb7801c60 <xfce_shortcuts_provider_property_changed>
        cc = 0x8102508
        data1 = <value optimized out>
        data2 = <value optimized out>
        __PRETTY_FUNCTION__ = "_xfconf_marshal_VOID__STRING_BOXED"
#4  0xb6ed6b72 in g_closure_invoke (closure=0x8102508, return_value=0x0, n_param_values=3, param_values=0x80b5458, invocation_hint=0xbfd61e80) at gclosure.c:767
        marshal = 0xb77f9c20 <_xfconf_marshal_VOID__STRING_BOXED>
        marshal_data = 0x0
        in_marshal = 135270656
#5  0xb6ee4483 in signal_emit_unlocked_R (node=0x80b8038, detail=550, instance=0x80f4e60, emission_return=0x0, instance_and_params=0x80b5458) at gsignal.c:3252
        tmp = <value optimized out>
        handler = 0x80f4f20
        accumulator = 0x0
        emission = {next = 0xbfd621c8, instance = 0x80f4e60, ihint = {signal_id = 93, detail = 550, run_type = G_SIGNAL_RUN_FIRST}, state = EMISSION_RUN, chain_type = 4}
        class_closure = 0x80dbea0
        handler_list = 0x80f4f20
        return_accu = 0x0
        accu = {g_type = 0, data = {{v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}, {v_int = 0, 
              v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}}}
        signal_id = 93
        max_sequential_handler_number = 19
        return_value_altered = 0
#6  0xb6eeb757 in g_signal_emit_valist (instance=0x80f4e60, signal_id=93, detail=550, var_args=0xbfd62044 "\340", <incomplete sequence \362>) at gsignal.c:2983
        instance_and_params = 0x80b5458
        signal_return_type = 4
        param_values = 0x80b546c
        node = 0x80b8038
        i = <value optimized out>
        n_params = 2
#7  0xb6eeb972 in g_signal_emit (instance=0x80f4e60, signal_id=93, detail=550) at gsignal.c:3040
        var_args = 0xbfd6203c "pH\020\b\310\026\020\b\340", <incomplete sequence \362>
#8  0xb77f54a2 in xfconf_channel_property_changed (cache=0x80f4e80, channel_name=0x8104850 "xfce4-keyboard-shortcuts", property=0x8104870 "/providers", value=0x81016c8, 
    user_data=0x80f4e60) at xfconf-channel.c:391
        channel = <value optimized out>
#9  0xb77f9be6 in _xfconf_marshal_VOID__STRING_STRING_BOXED (closure=0x8103c18, return_value=0x0, n_param_values=4, param_values=0x80b5060, invocation_hint=0xbfd621d0, 
    marshal_data=0x0) at xfconf-marshal.c:85
        callback = 0xb77f53e0 <xfconf_channel_property_changed>
        cc = 0x8103c18
        data1 = <value optimized out>
        data2 = <value optimized out>
        __PRETTY_FUNCTION__ = "_xfconf_marshal_VOID__STRING_STRING_BOXED"
#10 0xb6ed6b72 in g_closure_invoke (closure=0x8103c18, return_value=0x0, n_param_values=4, param_values=0x80b5060, invocation_hint=0xbfd621d0) at gclosure.c:767
        marshal = 0xb77f9b50 <_xfconf_marshal_VOID__STRING_STRING_BOXED>
        marshal_data = 0x0
        in_marshal = 135272960
#11 0xb6ee4483 in signal_emit_unlocked_R (node=0x8100bd8, detail=0, instance=0x80f4e80, emission_return=0x0, instance_and_params=0x80b5060) at gsignal.c:3252
        tmp = <value optimized out>
        handler = 0x80f4f00
        accumulator = 0x0
        emission = {next = 0x0, instance = 0x80f4e80, ihint = {signal_id = 94, detail = 0, run_type = G_SIGNAL_RUN_FIRST}, state = EMISSION_RUN, chain_type = 4}
        class_closure = 0x80b8020
        handler_list = 0x80f4f00
        return_accu = 0x0
        accu = {g_type = 0, data = {{v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}, {v_int = 0, 
              v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}}}
        signal_id = 94
        max_sequential_handler_number = 19
        return_value_altered = 0
#12 0xb6eeb757 in g_signal_emit_valist (instance=0x80f4e80, signal_id=94, detail=0, var_args=0xbfd62398 "h\032\020\b@") at gsignal.c:2983
        instance_and_params = 0x80b5060
        signal_return_type = 4
        param_values = 0x80b5074
        node = 0x8100bd8
        i = <value optimized out>
        n_params = 3
#13 0xb6eeb972 in g_signal_emit (instance=0x80f4e80, signal_id=94, detail=0) at gsignal.c:3040
        var_args = 0xbfd6238c "h\032\020\b\037P\200\267l$h\032\020\b@"
#14 0xb77f4944 in xfconf_cache_set (cache=0x80f4e80, property=0xb780501f "/providers", value=0xbfd6246c, error=0x0) at xfconf-cache.c:813
        proxy = 0x80dc688
        item = <value optimized out>
        old_item = <value optimized out>
#15 0xb77f50dd in xfconf_channel_set_internal (channel=0x80f4e60, property=0xb780501f "/providers", value=0xbfd6246c) at xfconf-channel.c:407
        ret = <value optimized out>
        real_property = 0xb780501f "/providers"
        __PRETTY_FUNCTION__ = "xfconf_channel_set_internal"
#16 0xb77f780c in IA__xfconf_channel_set_arrayv (channel=0x80f4e60, property=0xb780501f "/providers", values=0x8104350) at xfconf-channel.c:1719
        values_new = <value optimized out>
        val = {g_type = 135266240, data = {{v_int = 135283536, v_uint = 135283536, v_long = 135283536, v_ulong = 135283536, v_int64 = 135283536, v_uint64 = 135283536, 
              v_float = 4.34125492e-34, v_double = 6.6838947585527527e-316, v_pointer = 0x8104350}, {v_int = 134217728, v_uint = 134217728, v_long = 134217728, 
              v_ulong = 134217728, v_int64 = 134217728, v_uint64 = 134217728, v_float = 3.85185989e-34, v_double = 6.631236846766476e-316, v_pointer = 0x8000000}}}
        ret = <value optimized out>
        __PRETTY_FUNCTION__ = "IA__xfconf_channel_set_arrayv"
#17 0xb77f7eb5 in IA__xfconf_channel_set_string_list (channel=0x80f4e60, property=0xb780501f "/providers", values=0x8102728) at xfconf-channel.c:1067
        arr = 0x8104350
        val = <value optimized out>
        i = <value optimized out>
        ret = <value optimized out>
        __PRETTY_FUNCTION__ = "IA__xfconf_channel_set_string_list"
#18 0xb780242e in xfce_shortcuts_provider_register (object=0x80f4e40) at xfce-shortcuts-provider.c:266
        provider_names = 0x8103ef0
        i = <value optimized out>
        names = 0x8102728
        already_registered = 0
        name = 0x8101ad0 "xfwm4"
#19 xfce_shortcuts_provider_constructed (object=0x80f4e40) at xfce-shortcuts-provider.c:163
        provider = 0x80f4e40
#20 0xb6edac5a in g_object_newv (object_type=135118200, n_parameters=1, parameters=0x8102590) at gobject.c:1507
        cparams = <value optimized out>
        oparams = 0x8102718
        nqueue = <value optimized out>
        object = 0x80f4e40
        class = 0x8100b70
        unref_class = 0x0
        slist = <value optimized out>
        n_total_cparams = <value optimized out>
        n_cparams = <value optimized out>
        n_oparams = 0
        n_cvalues = <value optimized out>
        cvalues = <value optimized out>
        clist = <value optimized out>
        newly_constructed = 1
        i = <value optimized out>
        __PRETTY_FUNCTION__ = "g_object_newv"
#21 0xb6edb66b in g_object_new_valist (object_type=135118200, first_property_name=0xb7804f81 "name", var_args=<value optimized out>) at gobject.c:1596
        class = 0x8100b70
        params = 0x8102590
        name = <value optimized out>
        object = <value optimized out>
        n_params = <value optimized out>
        n_alloced_params = <value optimized out>
        __PRETTY_FUNCTION__ = "g_object_new_valist"
#22 0xb6edb78f in g_object_new (object_type=135118200, first_property_name=0xb7804f81 "name") at gobject.c:1311
        var_args = 0xbfd626f8 "ߕ\b\b"
#23 0xb7801df8 in xfce_shortcuts_provider_new (name=0x80895df "xfwm4") at xfce-shortcuts-provider.c:318
No locals.
#24 0x0807eb8a in initSettings (screen_info=0x80d33c0) at settings.c:1022
        keymap = <value optimized out>
        display_info = 0x80d1438
        names = 0x0
        val = 0
        i = 0
        __PRETTY_FUNCTION__ = "initSettings"
#25 0x0806ba53 in initialize (argc=1, argv=0xbfd628f4) at main.c:462
        screen_info = 0x80d33c0
        gscr = <value optimized out>
        ws = 134762073
        i = <value optimized out>
        nscreens = 1
#26 main (argc=1, argv=0xbfd628f4) at main.c:589
        daemon_mode = 0
        version = 0
        replace_wm = 0
        status = 0
        context = <value optimized out>
        error = 0x0
        option_entries = {{long_name = 0x808960c "daemon", short_name = 0 '\000', flags = 0, arg = G_OPTION_ARG_NONE, arg_data = 0xbfd6282c, 
            description = 0x8089613 "Fork to the background", arg_description = 0x0}, {long_name = 0x808962a "compositor", short_name = 0 '\000', flags = 0, 
            arg = G_OPTION_ARG_CALLBACK, arg_data = 0x806b680, description = 0x8089635 "Set the compositor mode", arg_description = 0x808964d "on|off|auto"}, {
            long_name = 0x8089659 "replace", short_name = 0 '\000', flags = 0, arg = G_OPTION_ARG_NONE, arg_data = 0xbfd62824, 
            description = 0x808977c "Replace the existing window manager", arg_description = 0x0}, {long_name = 0x8089661 "version", short_name = 86 'V', flags = 0, 
            arg = G_OPTION_ARG_NONE, arg_data = 0xbfd62828, description = 0x80897a0 "Print version information and exit", arg_description = 0x0}, {long_name = 0x0, 
            short_name = 0 '\000', flags = 0, arg = G_OPTION_ARG_NONE, arg_data = 0x0, description = 0x0, arg_description = 0x0}}
Comment 1 George McCollister 2012-02-07 20:42:20 CET
I've looked into it a bit more. I was getting some nuisance errors logged by gdm on my distro so I rebuilt glib with --enable-debug=no. It looks like it may cause g_return_val_if_fail not to perform the check in g_str_has_prefix. I was under the impression that setting --enable-debug=no simply stopped those messages from going to syslog.

If you don't intend for xfce to work when glib is built with --enable-debug=no then I think you can close this and mark as won't fix. However, if you intend for xfce to work when glib is built with --enable-debug=no you should probably do something about this.
Comment 2 Nick Schermer editbugs 2012-03-26 13:37:37 CEST
custom_base_property can only be null if the object is used before construction of already freed. So it does not look like a problem in the library.

Bug #8434

Reported by:
George McCollister
Reported on: 2012-02-07
Last modified on: 2012-03-26

People

Assignee:
Nick Schermer
CC List:
1 user

Version

Attachments

Additional information