Signal crashes in flatpak when notification is dismissed
https://github.com/flathub/org.signal.Signal/issues/521
It uses libnotify 0.8.2 from the electron baseapp https://github.com/flathub/org.electronjs.Electron2.BaseApp/blob/49ac7e89d86687dbbe620dd0ec059f335e559d74/org.electronjs.Electron2.BaseApp.yml#L42-L53
The crash seems to happen outside of a flatpak too when the portal backend is forced with NOTIFY_FORCE_PORTAL=1 ./signal-desktop
on the official signal.deb https://updates.signal.org/desktop/apt/pool/s/signal-desktop/signal-desktop_6.32.0_amd64.deb
To reproduce:
- Run
NOTIFY_FORCE_PORTAL=1 ./signal-desktop
- Send a notification from another device (a reply to your message will do)
- Dismiss or click that notification from the shell popup
- Signal crashes
Backtrace:
#0 g_type_check_instance_is_fundamentally_a (type_instance=0xa2402d31f60, fundamental_type=80) at ../gobject/gtype.c:4184
Downloading source file /usr/src/debug/glib2-2.78.0-3.fc39.x86_64/redhat-linux-build/../gobject/gtype.c
4184 node = lookup_type_node_I (type_instance->g_class->g_type);
[Current thread is 1 (Thread 0x7f16c4d78040 (LWP 43985))]
(gdb) bt
#0 g_type_check_instance_is_fundamentally_a (type_instance=0xa2402d31f60, fundamental_type=0x50 [GObject]) at ../gobject/gtype.c:4184
#1 0x00007f16c843bc38 in g_object_ref (_object=_object@entry=0xa2402d31f60) at ../gobject/gobject.c:3778
#2 0x00007f15246e4356 in close_notification (reason=NOTIFY_CLOSED_REASON_DISMISSED, notification=0xa2402d31f60) at ../libnotify/notification.c:705
#3 close_notification (reason=NOTIFY_CLOSED_REASON_DISMISSED, notification=0xa2402d31f60) at ../libnotify/notification.c:705
#4 proxy_g_signal_cb (proxy=<optimized out>, sender_name=<optimized out>, signal_name=<optimized out>, parameters=<optimized out>, notification=0xa2402d31f60)
at ../libnotify/notification.c:795
#5 0x00007f16c843052a in g_closure_invoke (closure=0xa2403724700, return_value=0x0, n_param_values=4, param_values=0x7fff12441a40, invocation_hint=0x7fff12441990)
at ../gobject/gclosure.c:832
#6 0x00007f16c845efec in signal_emit_unlocked_R.isra.0
(node=node@entry=0x7fff12441b60, detail=detail@entry=0, instance=instance@entry=0xa2403732eb0, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7fff12441a40) at ../gobject/gsignal.c:3980
#7 0x00007f16c844fd59 in signal_emit_valist_unlocked
(instance=instance@entry=0xa2403732eb0, signal_id=signal_id@entry=164, detail=detail@entry=0, var_args=var_args@entry=0x7fff12441cd0) at ../gobject/gsignal.c:3612
#8 0x00007f16c844ff91 in g_signal_emit_valist (instance=0xa2403732eb0, signal_id=164, detail=0, var_args=var_args@entry=0x7fff12441cd0) at ../gobject/gsignal.c:3355
#9 0x00007f16c8450053 in g_signal_emit (instance=instance@entry=0xa2403732eb0, signal_id=<optimized out>, detail=<optimized out>) at ../gobject/gsignal.c:3675
#10 0x00007f16c7e01c6b in on_signal_received
(connection=<optimized out>, sender_name=0xa240367ac00 ":1.79", object_path=<optimized out>, interface_name=<optimized out>, signal_name=0xa240367ac40 "ActionInvoked", parameters=0xa2402185f80, user_data=0xa240367a870) at ../gio/gdbusproxy.c:890
#11 0x00007f16c7ded380 in emit_signal_instance_in_idle_cb (data=data@entry=0xa240244c480) at ../gio/gdbusconnection.c:3802
#12 0x00007f16c7f0f74d in g_idle_dispatch (source=0xa240364a990, callback=0x7f16c7ded300 <emit_signal_instance_in_idle_cb>, user_data=0xa240244c480)
at ../glib/gmain.c:6282
#13 0x00007f16c7f12e1c in g_main_dispatch (context=0xa2400230fc0) at ../glib/gmain.c:3476
#14 g_main_context_dispatch_unlocked (context=0xa2400230fc0) at ../glib/gmain.c:4284
#15 0x00007f16c7f6dd78 in g_main_context_iterate_unlocked.isra.0
(context=context@entry=0xa2400230fc0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:4349
#16 0x00007f16c7f10a93 in g_main_context_iteration (context=0xa2400230fc0, may_block=1) at ../glib/gmain.c:4414
#17 0x000055b6bafa743c in ()
#18 0x00000a24003100f0 in ()
#19 0x0000000000000000 in ()
Edited by bbhtt