[xfce_notify_daemon_place_notification_window] Crash on SIGSEGV

EDIT: I've also tested the xfce4-notifyd-git from AUR, the bug (i.e. SIGSEGV in the same place, albeit possibly different vars) were still reproducible. I've also verified that reserved_rectangles = 0x0 and monitors_workarea = 0x0, so the issue ticket is still relevant in its entirety.


Issue Description

When checking out my coredumpctl, I've noticed that xfce4-notifyd does a lot of SIGSEGV.

I don't think it has any impact, other than constant crashing. I believe XFCE4 further recovers the notification daemon, so it is unnoticeable to end users.

I've pinpointed the bug to xndaemon->reserved_rectangles, used in xfce_notify_daemon_place_notification_window being NULL. I have yet to find what causes it to have NULL and whether it is on purpose, by analyzing the source code.

Outside of context for this issue, I've also noticed NULL in some other fields, like monitors_workarea. It might be interesting to investigate it if there will be more cases of SIGSEGV reported.

Expected Behavior

xfce4-notifyd will graciously recover from crashes (not cause SIGSEGV by proper memory management) or abort its execution if runtime conditions are unrecoverable.

Additional Information

Backtrace (full)
#0  0x00005591dc3c0a8a in xfce_notify_daemon_place_notification_window
    (xndaemon=xndaemon@entry=0x5591e4d0c200 [XfceNotifyDaemon], window=window@entry=0x5591e4f3e970 [XfceNotifyWindow], monitor=0x5591e4bbb5d0 [GdkWaylandMonitor])
    at /usr/src/debug/xfce4-notifyd/xfce4-notifyd/xfce4-notifyd/xfce-notify-daemon.c:805
        widget = 0x5591e4f3e970 [XfceNotifyWindow]
        screen = <optimized out>
        allocation = {x = 0, y = 0, width = 252, height = 76}
        max_width = 0
        monitor_num = <optimized out>
        found = 0
        workarea_width = <optimized out>
        workarea_height = <optimized out>
        xinitial = <optimized out>
        yinitial = <optimized out>
        widget_geom = {x = 0, y = 0, width = 1245313536, height = 1622344369}
        is_center = <optimized out>
        past_center = <optimized out>
        _g_boolean_var_14 = <optimized out>
#1  0x00005591dc3c0ef9 in xfce_notify_daemon_update_reserved_rectangles
    (key=<optimized out>, value=<optimized out>, data=0x5591e4d0c200)
    at /usr/src/debug/xfce4-notifyd/xfce4-notifyd/xfce4-notifyd/xfce-notify-daemon.c:902
        window = 0x5591e4f3e970 [XfceNotifyWindow]
        monitor = <optimized out>
        l = 0x5591e4bf2c50 = {0x5591e4f3e970}
        xndaemon = 0x5591e4d0c200 [XfceNotifyDaemon]
        notification = <optimized out>
        windows = <optimized out>
#2  0x00007fb1258d2f76 in g_tree_foreach
    (tree=<optimized out>, func=0x5591dc3c0e90 <xfce_notify_daemon_update_reserved_rectangles>, user_data=0x5591e4d0c200) at ../glib/glib/gtree.c:1138
        node = 0x5591e53730a0
        _g_boolean_var_32 = <optimized out>
#3  g_tree_foreach
    (tree=<optimized out>, func=0x5591dc3c0e90 <xfce_notify_daemon_update_reserved_rectangles>, user_data=0x5591e4d0c200) at ../glib/glib/gtree.c:1123
        node = <optimized out>
#7  0x00007fb1259c7fe3 in <emit signal 'monitors-changed or 0x7fb125db5a70 "monitors-changed"' on instance 0x5591e4b950a0 [GdkWaylandScreen]>
    (instance=instance@entry=0x5591e4b950a0, detailed_signal=detailed_signal@entry=0x7fb125db5a70 "monitors-changed") at ../glib/gobject/gsignal.c:3665
        var_args = {{gp_offset = 16, fp_offset = 48, overflow_arg_area = 0x7fff57d217a0, reg_save_area = 0x7fff57d216c0}}
        detail = <optimized out>
        signal_id = <optimized out>
        itype = 0x5591e4ba6960 [GdkWaylandScreen/GdkScreen]
    #4  0x00007fb1259a5bcc in g_closure_invoke
    (closure=0x5591e4c4c740, return_value=0x0, n_param_values=1, param_values=0x7fff57d21420, invocation_hint=0x7fff57d21370) at ../glib/gobject/gclosure.c:916
                marshal = 0x7fb1259aaef0 <g_cclosure_marshal_VOID__VOID>
                marshal_data = 0x0
                in_marshal = 0
                reffed_flags = {flags = {ref_count = 2, meta_marshal_nouse = 0, n_guards = 0, n_fnotifiers = 0, n_inotifiers = 0, in_inotify = 0, floating = 0, derivative_flag = 0, in_marshal = 0, is_invalid = 0}, closure = {ref_count = 2, meta_marshal_nouse = 0, n_guards = 0, n_fnotifiers = 0, n_inotifiers = 0, in_inotify = 0, floating = 0, derivative_flag = 0, in_marshal = 0, is_invalid = 0, marshal = 0x5591e4bf2660, data = 0x0, notifiers = 0x1}, atomic_int = 2}
                real_closure = 0x5591e4c4c720
    #5  0x00007fb1259c584b in signal_emit_unlocked_R
    (node=node@entry=0x7fff57d21540, detail=detail@entry=0, instance=instance@entry=0x5591e4b950a0, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7fff57d21420) at ../glib/gobject/gsignal.c:3929
                tmp = <optimized out>
                handler = 0x5591e4cadff0
                accumulator = <optimized out>
                emission = {next = 0x7fff57d21e70, instance = 0x5591e4b950a0, ihint = {signal_id = 22, detail = 0, run_type = (G_SIGNAL_RUN_FIRST | G_SIGNAL_ACCUMULATOR_FIRST_RUN)}, state = EMISSION_RUN, chain_type = 0x4}
                class_closure = <optimized out>
                hlist = <optimized out>
                handler_list = 0x5591e4bdc910
                return_accu = <optimized out>
                accu = {g_type = 0x0, 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 = <optimized out>
                max_sequential_handler_number = <optimized out>
                return_value_altered = <optimized out>
                n_params = <optimized out>
    #6  0x00007fb1259c7a34 in signal_emit_valist_unlocked
    (instance=instance@entry=0x5591e4b950a0, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7fff57d21690)
    at ../glib/gobject/gsignal.c:3561
                instance_and_params = <optimized out>
                param_values = <optimized out>
                node = <optimized out>
                i = <optimized out>
                node_copy = {signal_id = <optimized out>, itype = <optimized out>, name = <optimized out>, destroyed = <optimized out>, flags = <optimized out>, n_params = <optimized out>, single_va_closure_is_valid = <optimized out>, single_va_closure_is_after = <optimized out>, param_types = <optimized out>, return_type = <optimized out>, class_closure_bsa = <optimized out>, accumulator = <optimized out>, c_marshaller = <optimized out>, va_marshaller = <optimized out>, emission_hooks = <optimized out>, single_va_closure = <optimized out>}
#8  0x00007fb125d7412f in _gdk_wayland_screen_remove_output
    (screen=0x5591e4b950a0 [GdkWaylandScreen], id=73)
    at ../gtk/gdk/wayland/gdkscreen-wayland.c:1932
        screen_wayland = 0x5591e4b950a0 [GdkWaylandScreen]
        display_wayland = 0x5591e4b87740 [GdkWaylandDisplay]
        monitor = 0x5591e4bbb5d0 [GdkWaylandMonitor]
#9  gdk_registry_handle_global_remove
    (data=0x5591e4b87740, registry=<optimized out>, id=73)
    at ../gtk/gdk/wayland/gdkdisplay-wayland.c:577
        display_wayland = 0x5591e4b87740 [GdkWaylandDisplay]
        display = 0x5591e4b87740 [GdkWaylandDisplay]
#10 0x00007fb124e1dcd6 in ffi_call_unix64 () at ../src/x86/unix64.S:105
#11 0x00007fb124e199ad in ffi_call_int
    (cif=<optimized out>, fn=<optimized out>, rvalue=<optimized out>, avalue=<optimized out>, closure=closure@entry=0x0) at ../src/x86/ffi64.c:734
        classes = {X86_64_INTEGERSI_CLASS, 32767, 1473386672, 32767}
        stack = 0x7fff57d21730 "I"
        argp = 0x7fff57d217f0 ""
        arg_types = <optimized out>
        gprcount = 3
        ssecount = <optimized out>
        ngpr = 1
        nsse = 0
        i = <optimized out>
        avn = <optimized out>
        flags = <optimized out>
        reg_args = 0x7fff57d21730
#12 0x00007fb124e1cd52 in ffi_call
    (cif=cif@entry=0x7fff57d219b0, fn=<optimized out>, rvalue=rvalue@entry=0x0, avalue=<optimized out>, avalue@entry=0x7fff57d21a80) at ../src/x86/ffi64.c:1113
        arg_types = <optimized out>
        avalue_copy = <optimized out>
        i = <optimized out>
        nargs = 3
        max_reg_struct_size = <optimized out>
#13 0x00007fb124eec77d in wl_closure_invoke
    (closure=closure@entry=0x5591e4ed43a0, target=<optimized out>, 
    target@entry=0x5591e4bb8300, opcode=opcode@entry=1, data=<optimized out>, flags=1) at ../wayland-1.25.0/src/connection.c:1243
        count = 1
        cif = {abi = FFI_UNIX64, nargs = 3, arg_types = 0x7fff57d219d0, rtype = 0x7fb124e1f3e0 <ffi_type_void>, bytes = 0, flags = 0}
        ffi_types = {0x7fb124e1f2e0 <ffi_type_pointer>, 0x7fb124e1f2e0 <ffi_type_pointer>, 0x7fb124e1f340 <ffi_type_uint32>, 0x7fb124eece66 <ring_buffer_put+166>, 0x5591e4b9f7b0, 0x7fb12549481c <__internal_syscall_cancel+92>, 0x7fb124238f48, 0x7fb124eeb6e8 <wl_closure_init+200>, 0xdce4b9f7b0, 0xdc, 0x75, 0x60b302b14a39fa00, 0x2f, 0xc0001, 0x5591e4b9f600, 0x5591e4b9f728, 0x8, 0x1, 0x7fff57d21c20, 0x7fb124eefcd2 <wl_display_read_events+194>, 0x7fff57d21a90, 0x7fb125494864 <__syscall_cancel+20>}
        ffi_args = {0x7fff57d21990, 0x7fff57d21998, 0x5591e4ed43b8, 0x5591e4bb8300, 0x5591e4b9f600, 0x5591e4b9f790, 0x7fff57d21b60, 0x5591e4ed43a0, 0x7fb124ef2c42, 0x7fb124ef2c42, 0x5591e4b9f728, 0x0, 0x7fff0000000c, 0x5591e4b9f600, 0x0, 0x0, 0x75, 0x0, 0x7fff57d21b40, 0x2, 0x7fff57d21b60, 0x80}
        implementation = <optimized out>
#14 0x00007fb124eed609 in dispatch_event
    (display=display@entry=0x5591e4b9f600, queue=queue@entry=0x5591e4b9f6f8)
    at ../wayland-1.25.0/src/wayland-client.c:1731
        closure = 0x5591e4ed43a0
        proxy = 0x5591e4bb8300
        opcode = 1
        proxy_destroyed = <optimized out>
#15 0x00007fb124eeda13 in dispatch_queue
    (display=0x5591e4b9f600, queue=0x5591e4b9f6f8)
    at ../wayland-1.25.0/src/wayland-client.c:1877
        count = 6
#16 wl_display_dispatch_queue_pending
    (display=display@entry=0x5591e4b9f600, queue=queue@entry=0x5591e4b9f6f8)
    at ../wayland-1.25.0/src/wayland-client.c:2242
        ret = <optimized out>
#17 0x00007fb124ef1584 in wl_display_dispatch_queue_timeout
    (display=display@entry=0x5591e4b9f600, queue=queue@entry=0x5591e4b9f6f8, timeout=timeout@entry=0x0) at ../wayland-1.25.0/src/wayland-client.c:2148
        ret = <optimized out>
        now = {tv_sec = 0, tv_nsec = 0}
        deadline = {tv_sec = 0, tv_nsec = <optimized out>}
        result = {tv_sec = 94085096568144, tv_nsec = 224}
        remaining_timeout = 0x0
#18 0x00007fb124ef1660 in wl_display_dispatch_queue
    (display=display@entry=0x5591e4b9f600, queue=queue@entry=0x5591e4b9f6f8)
    at ../wayland-1.25.0/src/wayland-client.c:2215
        ret = <optimized out>
#19 0x00007fb124ef174c in wl_display_roundtrip_queue
    (display=display@entry=0x5591e4b9f600, queue=queue@entry=0x5591e4b9f6f8)
    at ../wayland-1.25.0/src/wayland-client.c:1479
        display_wrapper = 0x5591e4cc31e0
        callback = 0x5591e5372db0
        done = 0
        ret = 0
#20 0x00007fb124ef17a1 in wl_display_roundtrip
    (display=display@entry=0x5591e4b9f600)
    at ../wayland-1.25.0/src/wayland-client.c:1508
#21 0x00007fb125810b11 in custom_shell_surface_on_window_map
    (widget=0x5591e4f3e970 [XfceNotifyWindow], self=0x5591e4fb78d0)
    at ../gtk-layer-shell-0.10.1/src/custom-shell-surface.c:90
        gdk_window = <optimized out>
        wl_surface = <optimized out>
        display = 0x5591e4b9f600
        start_time_micro = 75799098746
#26 0x00007fb1259c7d94 in <emit signal 'map' on instance 0x5591e4f3e970 [XfceNotifyWindow]>
    (instance=instance@entry=0x5591e4f3e970, signal_id=<optimized out>, detail=detail@entry=0) at ../glib/gobject/gsignal.c:3624
        var_args = {{gp_offset = 24, fp_offset = 48, overflow_arg_area = 0x7fff57d22290, reg_save_area = 0x7fff57d221d0}}
    #22 0x00007fb1259a5bcc in g_closure_invoke
    (closure=0x5591e4c81e00, return_value=0x0, n_param_values=1, param_values=0x7fff57d21f30, invocation_hint=0x7fff57d21e80) at ../glib/gobject/gclosure.c:916
                marshal = 0x7fb1259aaef0 <g_cclosure_marshal_VOID__VOID>
                marshal_data = 0x0
                in_marshal = 0
                reffed_flags = {flags = {ref_count = 2, meta_marshal_nouse = 0, n_guards = 0, n_fnotifiers = 0, n_inotifiers = 0, in_inotify = 0, floating = 0, derivative_flag = 0, in_marshal = 0, is_invalid = 0}, closure = {ref_count = 2, meta_marshal_nouse = 0, n_guards = 0, n_fnotifiers = 0, n_inotifiers = 0, in_inotify = 0, floating = 0, derivative_flag = 0, in_marshal = 0, is_invalid = 0, marshal = 0x0, data = 0x7fb1259aae80 <g_type_class_meta_marshal>, notifiers = 0x5591e4c01c50}, atomic_int = 2}
                real_closure = 0x5591e4c81de0
    #23 0x00007fb1259c584b in signal_emit_unlocked_R
    (node=node@entry=0x7fff57d22050, detail=detail@entry=0, instance=instance@entry=0x5591e4f3e970, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7fff57d21f30) at ../glib/gobject/gsignal.c:3929
                tmp = <optimized out>
                handler = 0x5591e4d23aa0
                accumulator = <optimized out>
                emission = {next = 0x7fff57d22450, instance = 0x5591e4f3e970, ihint = {signal_id = 57, detail = 0, run_type = (G_SIGNAL_RUN_FIRST | G_SIGNAL_ACCUMULATOR_FIRST_RUN)}, state = EMISSION_RUN, chain_type = 0x4}
                class_closure = <optimized out>
                hlist = <optimized out>
                handler_list = 0x5591e4d23aa0
                return_accu = <optimized out>
                accu = {g_type = 0x0, 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 = <optimized out>
                max_sequential_handler_number = <optimized out>
                return_value_altered = <optimized out>
                n_params = <optimized out>
    #24 0x00007fb1259c7a34 in signal_emit_valist_unlocked
    (instance=instance@entry=0x5591e4f3e970, signal_id=signal_id@entry=57, detail=detail@entry=0, var_args=var_args@entry=0x7fff57d221b0)
    at ../glib/gobject/gsignal.c:3561
                instance_and_params = <optimized out>
                param_values = <optimized out>
                node = <optimized out>
                i = <optimized out>
                node_copy = {signal_id = <optimized out>, itype = <optimized out>, name = <optimized out>, destroyed = <optimized out>, flags = <optimized out>, n_params = <optimized out>, single_va_closure_is_valid = <optimized out>, single_va_closure_is_after = <optimized out>, param_types = <optimized out>, return_type = <optimized out>, class_closure_bsa = <optimized out>, accumulator = <optimized out>, c_marshaller = <optimized out>, va_marshaller = <optimized out>, emission_hooks = <optimized out>, single_va_closure = <optimized out>}
    #25 0x00007fb1259c7cd9 in g_signal_emit_valist
    (instance=0x5591e4f3e970, signal_id=57, detail=0, var_args=var_args@entry=0x7fff57d221b0) at ../glib/gobject/gsignal.c:3304
#27 0x00007fb12615c731 in gtk_widget_map
    (widget=0x5591e4f3e970 [XfceNotifyWindow]) at ../gtk/gtk/gtkwidget.c:5058
        priv = <optimized out>
        _g_boolean_var_28 = <optimized out>
        __inst = <optimized out>
        __t = <optimized out>
        __r = <optimized out>
#28 gtk_widget_map (widget=0x5591e4f3e970 [XfceNotifyWindow])
    at ../gtk/gtk/gtkwidget.c:5041
        priv = <optimized out>
        _g_boolean_var_29 = <optimized out>
        _g_boolean_var_30 = <optimized out>
#29 0x00007fb12617fa50 in gtk_window_show
    (widget=0x5591e4f3e970 [XfceNotifyWindow]) at ../gtk/gtk/gtkwindow.c:6214
        window = 0x5591e4f3e970 [XfceNotifyWindow]
        priv = <optimized out>
        container = 0x5591e4f3e970 [XfceNotifyWindow]
        is_plug = <optimized out>
#30 0x00005591dc3c8d8d in xfce_notify_window_show
    (widget=0x5591e4f3e970 [XfceNotifyWindow])
    at /usr/src/debug/xfce4-notifyd/xfce4-notifyd/xfce4-notifyd/xfce-notify-window.c:864
        window = 0x5591e4f3e970 [XfceNotifyWindow]
#35 0x00007fb1259c7d94 in <emit signal 'show' on instance 0x5591e4f3e970 [XfceNotifyWindow]>
    (instance=instance@entry=0x5591e4f3e970, signal_id=<optimized out>, detail=detail@entry=0) at ../glib/gobject/gsignal.c:3624
        var_args = {{gp_offset = 24, fp_offset = 48, overflow_arg_area = 0x7fff57d22870, reg_save_area = 0x7fff57d227b0}}
    #31 0x00007fb1259a5bcc in g_closure_invoke
    (closure=0x5591e4b92580, return_value=0x0, n_param_values=1, param_values=0x7fff57d22510, invocation_hint=0x7fff57d22460) at ../glib/gobject/gclosure.c:916
                marshal = 0x7fb1259aae80 <g_type_class_meta_marshal>
                marshal_data = 0xa0
                in_marshal = 0
                reffed_flags = {flags = {ref_count = 2, meta_marshal_nouse = 0, n_guards = 0, n_fnotifiers = 0, n_inotifiers = 0, in_inotify = 0, floating = 0, derivative_flag = 0, in_marshal = 0, is_invalid = 0}, closure = {ref_count = 2, meta_marshal_nouse = 0, n_guards = 0, n_fnotifiers = 0, n_inotifiers = 0, in_inotify = 0, floating = 0, derivative_flag = 0, in_marshal = 0, is_invalid = 0, marshal = 0x60b302b14a39fa00, data = 0x5591e4b7c0a8, notifiers = 0x5591e4c74100}, atomic_int = 2}
                real_closure = 0x5591e4b92560
    #32 0x00007fb1259c5999 in signal_emit_unlocked_R
    (node=node@entry=0x7fff57d22630, detail=detail@entry=0, instance=instance@entry=0x5591e4f3e970, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7fff57d22510) at ../glib/gobject/gsignal.c:3762
                accumulator = <optimized out>
                emission = {next = 0x0, instance = 0x5591e4f3e970, ihint = {signal_id = 55, detail = 0, run_type = (G_SIGNAL_RUN_FIRST | G_SIGNAL_ACCUMULATOR_FIRST_RUN)}, state = EMISSION_RUN, chain_type = 0x5591e4c6a280 [XfceNotifyWindow/GtkWindow/GtkBin/GtkContainer/GtkWidget/GInitiallyUnowned]}
                class_closure = <optimized out>
                hlist = <optimized out>
                handler_list = <optimized out>
                return_accu = <optimized out>
                accu = {g_type = 0x0, 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 = <optimized out>
                max_sequential_handler_number = 334
                return_value_altered = <optimized out>
                n_params = <optimized out>
    #33 0x00007fb1259c7a34 in signal_emit_valist_unlocked
    (instance=instance@entry=0x5591e4f3e970, signal_id=signal_id@entry=55, detail=detail@entry=0, var_args=var_args@entry=0x7fff57d22790)
    at ../glib/gobject/gsignal.c:3561
                instance_and_params = <optimized out>
                param_values = <optimized out>
                node = <optimized out>
                i = <optimized out>
                node_copy = {signal_id = <optimized out>, itype = <optimized out>, name = <optimized out>, destroyed = <optimized out>, flags = <optimized out>, n_params = <optimized out>, single_va_closure_is_valid = <optimized out>, single_va_closure_is_after = <optimized out>, param_types = <optimized out>, return_type = <optimized out>, class_closure_bsa = <optimized out>, accumulator = <optimized out>, c_marshaller = <optimized out>, va_marshaller = <optimized out>, emission_hooks = <optimized out>, single_va_closure = <optimized out>}
    #34 0x00007fb1259c7cd9 in g_signal_emit_valist
    (instance=0x5591e4f3e970, signal_id=55, detail=0, var_args=var_args@entry=0x7fff57d22790) at ../glib/gobject/gsignal.c:3304
#36 0x00007fb12615ce62 in gtk_widget_show
    (widget=0x5591e4f3e970 [XfceNotifyWindow]) at ../gtk/gtk/gtkwidget.c:4859
        parent = <optimized out>
        _g_boolean_var_23 = <optimized out>
        __inst = <optimized out>
        __t = <optimized out>
        __r = <optimized out>
#37 gtk_widget_show (widget=0x5591e4f3e970 [XfceNotifyWindow])
    at ../gtk/gtk/gtkwidget.c:4832
        parent = <optimized out>
#38 0x00005591dc3c12b9 in notify_show_windows (data=<optimized out>)
    at /usr/src/debug/xfce4-notifyd/xfce4-notifyd/xfce4-notifyd/xfce-notify-daemon.c:939
        l = 0x5591e4bf2c50 = {0x5591e4f3e970}
        notification = <optimized out>
#39 0x00007fb125892c76 in g_main_dispatch (context=0x5591e4b8b980)
    at ../glib/glib/gmain.c:3591
        user_data = 0x5591e4c12e30
        callback = 0x5591dc3c1260 <notify_show_windows>
        gaig_temp = <optimized out>
        gaig_temp = <optimized out>
        cb_data = 0x7fb0e8014a40
        need_destroy = <optimized out>
        dispatch = 0x7fb12588eea0 <g_idle_dispatch>
        prev_source = 0x0
        was_in_call = 0
        cb_funcs = 0x7fb1259923a0 <g_source_callback_funcs>
        begin_time_nsec = 75799098360985
        source = 0x7fb0f800b690
        gaig_temp = <optimized out>
        current = 0x5591e4b93460
        i = 0
#40 0x00007fb125894ed7 in g_main_context_dispatch_unlocked
    (context=0x5591e4b8b980) at ../glib/glib/gmain.c:4451
#41 g_main_context_iterate_unlocked
    (context=0x5591e4b8b980, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/glib/gmain.c:4516
        max_priority = 200
        timeout_usec = 0
        some_ready = 1
        nfds = 4
        allocated_nfds = <optimized out>
        fds = <optimized out>
        begin_time_nsec = <optimized out>
#42 0x00007fb125895217 in g_main_loop_run (loop=0x5591e4dc56d0)
    at ../glib/glib/gmain.c:4721
        self = <optimized out>
#43 0x00007fb125feac4f in gtk_main () at ../gtk/gtk/gtkmain.c:1332
        loop = 0x5591e4dc56d0
#44 0x00005591dc3b9601 in main (argc=<optimized out>, argv=<optimized out>)
    at /usr/src/debug/xfce4-notifyd/xfce4-notifyd/xfce4-notifyd/main.c:132
        xndaemon = 0x5591e4d0c200 [XfceNotifyDaemon]
        error = 0x0
        windowing_error = <optimized out>
Backtrace (full, after 14bb3cc6)
(gdb) bt full
#0  0x000055d73e433dbe in xfce_notify_daemon_place_notification_window
    (xndaemon=xndaemon@entry=0x55d746efb820, window=window@entry=0x55d746f9ab50, monitor=monitor@entry=0x55d74710f0d0)
    at ../../../../xfce4-notifyd/xfce-notify-daemon.c:824
        widget = 0x55d746f9ab50
        screen = <optimized out>
        allocation = {x = 1116969216, y = 32765, width = 1793712143, height = 32532}
        max_width = 0
        monitor_num = <optimized out>
        found = 0
        workarea_width = <optimized out>
        workarea_height = <optimized out>
        xinitial = <optimized out>
        yinitial = <optimized out>
        widget_geom = {x = 0, y = 0, width = 1194922368, height = 21975}
        is_center = <optimized out>
        past_center = <optimized out>
        _g_boolean_var_14 = <optimized out>
#1  0x000055d73e436e89 in notify_notify
    (skeleton=0x55d746efb820, invocation=0x7f1458005620, app_name=<optimized out>, replaces_id=<optimized out>, app_icon=0x55d74737ae60 "", summary=<optimized out>, body=0x7f1458004280 "", actions_data=0x55d7471da940, hints=0x7f1458004380, expire_timeout=2000, xndaemon=0x55d746ef--Type <RET> for more, q to quit, c to continue without paging--c
b820) at ../../../../xfce4-notifyd/xfce-notify-daemon.c:1660
        window = 0x55d746f9ab50
        nat_size = {width = 240, height = 76}
        allocation = {x = 0, y = 0, width = 240, height = 76}
        monitor = 0x55d74710f0d0
        l = 0x55d746fa2240 = {0x55d746f9ab50}
        windows = <optimized out>
        n_monitors = <optimized out>
        i = <optimized out>
        display = <optimized out>
        monitors = <optimized out>
        notification = <optimized out>
        actions = <optimized out>
        n_actions = <optimized out>
        log_id = <optimized out>
        image_data = 0x0
        icon_data = 0x0
        image_path = <optimized out>
        desktop_id = <optimized out>
        icon_name = 0x55d7473963f0 "microphone-sensitivity-high-symbolic"
        icon_pixbuf = 0x0
        icon_id = <optimized out>
        new_app_name = 0x55d7471e67a0 "org.xfce.clipman"
        value_hint = <optimized out>
        urgency = <optimized out>
        value_hint_set = <optimized out>
        icon_only = <optimized out>
        transient = <optimized out>
        actions_are_icon_names = <optimized out>
        log_level_ok = <optimized out>
        log_level_apps_ok = <optimized out>
        has_sound = <optimized out>
        sound_props = 0x0
        ca_err = <optimized out>
        item = <optimized out>
        iter = {x = {139725352485760, 5, 5, 0, 94383098622160, 144, 140725720423280, 3579507750, 139723876073474, 0, 139725677512544, 139725352484512, 140724603453442, 94383095157200, 140725720423072, 139725675789347}}
        OUT_id = 20
        application_is_muted = <optimized out>
        summary_text = <optimized out>
        body_text = <optimized out>
        suppress_duplicate = <optimized out>
#2  0x000055d73e42ee1a in _g_dbus_codegen_marshal_BOOLEAN__OBJECT_STRING_UINT_STRING_STRING_STRING_BOXED_VARIANT_INT
    (invocation_hint=<optimized out>, closure=0x55d746e96460, return_value=0x7ffd42939cb0, n_param_values=<optimized out>, param_values=0x55d746f2b390, marshal_data=<optimized out>) at xfce4-notifyd/xfce-notify-fdo-gbus.c:367
        callback = <optimized out>
        cc = 0x55d746e96460
        data1 = <optimized out>
        data2 = <optimized out>
        v_return = <optimized out>
#7  Python Exception <class 'gdb.error'>: There is no member named v_pointer.
#8  0x000055d73e42f734 in _xfce_notify_fdo_gbus_skeleton_handle_method_call
    (connection=<optimized out>, sender=<optimized out>, object_path=<optimized out>, interface_name=0x55d747390ec0 "org.freedesktop.Notifications", method_name=0x7f1458004f20 "Notify", parameters=<optimized out>, invocation=0x7f1458005620, user_data=0x55d746efb820)
    at xfce4-notifyd/xfce-notify-fdo-gbus.c:2098
        skeleton = 0x55d746efb820
        info = 0x55d73e446260 <_xfce_notify_fdo_gbus_method_info_notify>
        iter = {x = {139725352490448, 8, 8, 0, 140725720424272, 94383095228800, 140725720424240, 3579507750, 140725720424256, 15094527764753501440, 192, 94383096444960, 0, 94383096444960, 140725720424272, 1}}
        child = <optimized out>
        paramv = 0x55d746f2b390
        num_params = <optimized out>
        num_extra = <optimized out>
        n = <optimized out>
        signal_id = 194
        return_value = {g_type = 0x14, 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}}}
#9  0x00007f146b6ba50c in g_dbus_interface_skeleton_method_dispatch_real
    (interface=<optimized out>, method_call_func=0x55d73e42f530 <_xfce_notify_fdo_gbus_skeleton_handle_method_call>, invocation=0x7f1458005620, flags=<optimized out>, object=<optimized out>) at ../glib/gio/gdbusinterfaceskeleton.c:616
        has_handlers = <optimized out>
        has_default_class_handler = <optimized out>
        emit_authorized_signal = <optimized out>
        run_in_thread = <optimized out>
#10 0x00007f146b6a4a0d in call_in_idle_cb (user_data=0x7f1458005620) at ../glib/gio/gdbusconnection.c:5470
        invocation = 0x7f1458005620
        vtable = <optimized out>
        registration_id = <optimized out>
        subtree_registration_id = <optimized out>
        ei = 0x55d747311520
        es = 0x0
#11 0x00007f146b422c76 in g_main_dispatch (context=0x55d746dd2980) at ../glib/glib/gmain.c:3591
        user_data = 0x7f1458005620
        callback = 0x7f146b6a48e0 <call_in_idle_cb>
        gaig_temp = <optimized out>
        gaig_temp = <optimized out>
        cb_data = 0x7f14580082f0
        need_destroy = <optimized out>
        dispatch = 0x7f146b41eea0 <g_idle_dispatch>
        prev_source = 0x0
        was_in_call = 0
        cb_funcs = 0x7f146b5223a0 <g_source_callback_funcs>
        begin_time_nsec = 20188881031701
        source = 0x7f1458005690
        gaig_temp = <optimized out>
        current = 0x55d746dda460
        i = 0
#12 0x00007f146b424ed7 in g_main_context_dispatch_unlocked (context=0x55d746dd2980) at ../glib/glib/gmain.c:4451
#13 g_main_context_iterate_unlocked (context=0x55d746dd2980, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>)
    at ../glib/glib/gmain.c:4516
        max_priority = 2147483647
        timeout_usec = -1
        some_ready = 1
        nfds = 4
        allocated_nfds = <optimized out>
        fds = <optimized out>
        begin_time_nsec = <optimized out>
#14 0x00007f146b425217 in g_main_loop_run (loop=0x55d746df1f50) at ../glib/glib/gmain.c:4721
        self = <optimized out>
#15 0x00007f146adeac4f in gtk_main () at ../gtk/gtk/gtkmain.c:1332
        loop = 0x55d746df1f50
#16 0x000055d73e43bcc1 in main (argc=<optimized out>, argv=<optimized out>) at ../../../../xfce4-notifyd/main.c:128
        xndaemon = 0x55d746efb820
        error = 0x0
        windowing_error = <optimized out>
(gdb)

Versions

  • OS distribution and version: Arch Linux, rolling
  • Overall Xfce version: 4.20, also e66a356f
  • xfce4-notifyd version (git hash if not a release): 0.9.7
  • Windowing system (X11/Wayland): Wayland
  • Compositor and version (if Wayland): labwc 0.20.1 wlroots-0.20.2
Edited by SpacingBat3