Hello, not being the maintainer I tried to reproduce the issue. I think we see here an exhaustion of the stack.
Because clicking on the zoom button triggers a change of a g_settings/dconf entry. That triggers the callback view_set_scalex into florence. That tries to set the g_settings/dconf entry again. And so on. Attached (ugly) patch avoids the recursion by leaving functions view_set_scalex and view_set_scaley if we are already executing them. But there is probably a better way by using g_signal_handler_block/unblock? Kind regards, Bernhard benutzer@debian:~$ gdb -q --args florence Reading symbols from florence...Reading symbols from /usr/lib/debug/.build-id/50/4563f002de302f17974c902b711a2e6280778d.debug...done. done. (gdb) run Starting program: /usr/bin/florence [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". Florence version 0.6.3 [New Thread 0x7fffe4823700 (LWP 557)] [New Thread 0x7fffe4022700 (LWP 558)] [New Thread 0x7fffe3821700 (LWP 559)] [New Thread 0x7fffe3020700 (LWP 560)] [New Thread 0x7fffe23d8700 (LWP 562)] XRecord extension found version=1.13 Your screen does not support alpha channel. Semi-transparency is disabled [New Thread 0x7fffe191b700 (LWP 565)] WARNING: Service name lost. WARNING: Notification failed (florence:552): GLib-GObject-CRITICAL **: g_object_set: assertion 'G_IS_OBJECT (object)' failed (florence:552): GStreamer-CRITICAL **: gst_element_get_bus: assertion 'GST_IS_ELEMENT (element)' failed (florence:552): GStreamer-CRITICAL **: gst_bus_add_watch_full: assertion 'GST_IS_BUS (bus)' failed (florence:552): GStreamer-CRITICAL **: gst_object_unref: assertion 'object != NULL' failed (florence:552): dconf-WARNING **: failed to commit changes to dconf: Failed to execute child process "dbus-launch" (Datei oder Verzeichnis nicht gefunden) (florence:552): dconf-WARNING **: failed to commit changes to dconf: Failed to execute child process "dbus-launch" (Datei oder Verzeichnis nicht gefunden) ... (florence:552): dconf-WARNING **: failed to commit changes to dconf: Failed to execute child process "dbus-launch" (Datei oder Verzeichnis nicht gefunden) Thread 1 "florence" received signal SIGSEGV, Segmentation fault. g_settings_get_value (settings=0x5555557e25c0 [GSettings], key=key@entry=0x555555578638 "scalex") at ././gio/gsettings.c:1200 1200 ././gio/gsettings.c: Datei oder Verzeichnis nicht gefunden. (gdb) bt #0 0x00007ffff457488e in g_settings_get_value (settings=0x5555557e25c0 [GSettings], key=key@entry=0x555555578638 "scalex") at ././gio/gsettings.c:1200 #1 0x00005555555685ed in settings_value_get (item=item@entry=SETTINGS_SCALEX) at settings.c:348 #2 0x0000555555568877 in settings_get_double (item=item@entry=SETTINGS_SCALEX) at settings.c:407 #3 0x000055555556e7a6 in view_set_scalex (settings=0x5555557e25c0 [GSettings], key=0x55555588a31d "scalex", user_data=0x555555907a30) at view.c:733 #7 0x00007ffff4242fbf in <emit signal changed:scalex on instance 0x5555557e25c0 [GSettings]> (instance=instance@entry=0x5555557e25c0, signal_id=<optimized out>, detail=<optimized out>) at ././gobject/gsignal.c:3447 #4 0x00007ffff4227ecf in g_closure_invoke (closure=0x55555599c660, return_value=return_value@entry=0x0, n_param_values=2, param_values=param_values@entry=0x7fffff7ff280, invocation_hint=invocation_hint@entry=0x7fffff7ff200) at ././gobject/gclosure.c:804 #5 0x00007ffff4239f82 in signal_emit_unlocked_R (node=node@entry=0x555555879a40, detail=detail@entry=1267, instance=instance@entry=0x5555557e25c0, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7fffff7ff280) at ././gobject/gsignal.c:3635 #6 0x00007ffff4242bdc in g_signal_emit_valist (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7fffff7ff440) at ././gobject/gsignal.c:3391 #8 0x00007ffff4573516 in g_settings_real_change_event (settings=0x5555557e25c0 [GSettings], keys=0x7fffff7ffb04, n_keys=<optimized out>) at ././gio/gsettings.c:386 #9 0x00007fffecdb0038 in ffi_call_unix64 () at ../src/x86/unix64.S:76 #10 0x00007fffecdafa9a in ffi_call (cif=cif@entry=0x7fffff7ff790, fn=fn@entry=0x7ffff45734a0 <g_settings_real_change_event>, rvalue=<optimized out>, avalue=avalue@entry=0x7fffff7ff680) at ../src/x86/ffi64.c:525 #11 0x00007ffff4228c8a in g_cclosure_marshal_generic_va (closure=0x555555879af0, return_value=0x7fffff7ff950, instance=<optimized out>, args_list=<optimized out>, marshal_data=<optimized out>, n_params=2, param_types=0x555555879b20) at ././gobject/gclosure.c:1604 #12 0x00007ffff42280f2 in _g_closure_invoke_va (closure=closure@entry=0x555555879af0, return_value=return_value@entry=0x7fffff7ff950, instance=instance@entry=0x5555557e25c0, args=args@entry=0x7fffff7ffa20, n_params=2, param_types=0x555555879b20) at ././gobject/gclosure.c:867 #13 0x00007ffff42423a1 in g_signal_emit_valist (instance=0x5555557e25c0, signal_id=<optimized out>, detail=0, var_args=var_args@entry=0x7fffff7ffa20) at ././gobject/gsignal.c:3300 #14 0x00007ffff4242fbf in g_signal_emit (instance=instance@entry=0x5555557e25c0, signal_id=<optimized out>, detail=detail@entry=0) at ././gobject/gsignal.c:3447 #15 0x00007ffff4573154 in settings_backend_changed (target=0x5555557e25c0 [GSettings], backend=<optimized out>, key=<optimized out>, origin_tag=<optimized out>) at ././gio/gsettings.c:446 #16 0x00007ffff456e89a in g_settings_backend_invoke_closure (user_data=0x555555f05100) at ././gio/gsettingsbackend.c:267 #17 0x00007ffff3f4f725 in g_main_context_invoke_full (context=0x5555557c2f10, priority=0, function=0x7ffff456e880 <g_settings_backend_invoke_closure>, data=0x555555f05100, notify=0x0) at ././glib/gmain.c:5742 #18 0x00007ffff3f4f830 in g_main_context_invoke (context=<optimized out>, function=<optimized out>, data=<optimized out>) at ././glib/gmain.c:5703 #19 0x00007ffff456e9a8 in g_settings_backend_dispatch_signal (backend=0x555555863c90 [DConfSettingsBackend], function_offset=0, name=0x555555f04eb0 "/apps/florence/window/scalex", origin_tag=0x0, names=0x0) at ././gio/gsettingsbackend.c:322 #20 0x00007fffe23dd344 in dconf_engine_emit_changes (engine=engine@entry=0x555555865af0, changeset=changeset@entry=0x555555f04b00, origin_tag=origin_tag@entry=0x0) at dconf-engine.c:977 #21 0x00007fffe23de5a9 in dconf_engine_change_fast (engine=0x555555865af0, changeset=changeset@entry=0x555555f04b00, origin_tag=origin_tag@entry=0x0, error=error@entry=0x0) at dconf-engine.c:1192 #22 0x00007fffe23dce9c in dconf_settings_backend_write (backend=0x555555863c90 [DConfSettingsBackend], key=0x555555f04d10 "/apps/florence/window/scalex", value=0x555555f04a10, origin_tag=0x0) at dconfsettingsbackend.c:76 #23 0x00007ffff456f3a4 in g_settings_backend_write (backend=0x555555863c90 [DConfSettingsBackend], key=key@entry=0x555555f04d10 "/apps/florence/window/scalex", value=value@entry=0x555555f04a10, origin_tag=origin_tag@entry=0x0) at ././gio/gsettingsbackend.c:783 #24 0x00007ffff4573df3 in g_settings_write_to_backend (settings=settings@entry=0x5555557e25c0 [GSettings], value=value@entry=0x555555f04a10, key=<optimized out>) at ././gio/gsettings.c:1144 #25 0x00007ffff4575265 in g_settings_set_value (settings=0x5555557e25c0 [GSettings], key=key@entry=0x555555578638 "scalex", value=0x555555f04a10) at ././gio/gsettings.c:1597 #26 0x00007ffff4575985 in g_settings_set_double (settings=<optimized out>, key=key@entry=0x555555578638 "scalex", value=value@entry=21) at ././gio/gsettings.c:2104 #27 0x0000555555568a52 in settings_set_double (item=item@entry=SETTINGS_SCALEX, value=21, b=b@entry=1) at settings.c:432 #28 0x0000555555566301 in key_release (key=key@entry=0x5555559078c0, status=status@entry=0x5555558a7800) at key.c:349 #29 0x0000555555570aa1 in status_release (status=0x5555558a7800, key=0x5555559078c0) at status.c:289 #30 0x00005555555747b8 in fsm_process (status=status@entry=0x5555558a7800, key=0x5555559078c0, event=event@entry=FSM_RELEASE) at fsm.c:197 #31 0x0000555555570906 in status_pressed_set (status=status@entry=0x5555558a7800, pressed=pressed@entry=0x0) at status.c:222 #32 0x0000555555570a24 in status_focus_set (status=0x5555558a7800, focus=focus@entry=0x0) at status.c:183 #33 0x000055555556e704 in view_update_extensions (settings=settings@entry=0x5555557e25c0 [GSettings], key=key@entry=0x55555588a31d "scalex", user_data=user_data@entry=0x555555907a30) at view.c:720 #34 0x000055555556e7d1 in view_set_scalex (settings=0x5555557e25c0 [GSettings], key=0x55555588a31d "scalex", user_data=0x555555907a30) at view.c:735 #38 0x00007ffff4242fbf in <emit signal changed:scalex on instance 0x5555557e25c0 [GSettings]> (instance=instance@entry=0x5555557e25c0, signal_id=<optimized out>, detail=<optimized out>) at ././gobject/gsignal.c:3447 #35 0x00007ffff4227ecf in g_closure_invoke (closure=0x55555599c660, return_value=return_value@entry=0x0, n_param_values=2, param_values=param_values@entry=0x7fffff8000a0, invocation_hint=invocation_hint@entry=0x7fffff800020) at ././gobject/gclosure.c:804 #36 0x00007ffff4239f82 in signal_emit_unlocked_R (node=node@entry=0x555555879a40, detail=detail@entry=1267, instance=instance@entry=0x5555557e25c0, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7fffff8000a0) at ././gobject/gsignal.c:3635 #37 0x00007ffff4242bdc in g_signal_emit_valist (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7fffff800260) at ././gobject/gsignal.c:3391 #39 0x00007ffff4573516 in g_settings_real_change_event (settings=0x5555557e25c0 [GSettings], keys=0x7fffff800924, n_keys=<optimized out>) at ././gio/gsettings.c:386 #40 0x00007fffecdb0038 in ffi_call_unix64 () at ../src/x86/unix64.S:76 #41 0x00007fffecdafa9a in ffi_call (cif=cif@entry=0x7fffff8005b0, fn=fn@entry=0x7ffff45734a0 <g_settings_real_change_event>, rvalue=<optimized out>, avalue=avalue@entry=0x7fffff8004a0) at ../src/x86/ffi64.c:525 #42 0x00007ffff4228c8a in g_cclosure_marshal_generic_va (closure=0x555555879af0, return_value=0x7fffff800770, instance=<optimized out>, args_list=<optimized out>, marshal_data=<optimized out>, n_params=2, param_types=0x555555879b20) at ././gobject/gclosure.c:1604 #43 0x00007ffff42280f2 in _g_closure_invoke_va (closure=closure@entry=0x555555879af0, return_value=return_value@entry=0x7fffff800770, instance=instance@entry=0x5555557e25c0, args=args@entry=0x7fffff800840, n_params=2, param_types=0x555555879b20) at ././gobject/gclosure.c:867 #44 0x00007ffff42423a1 in g_signal_emit_valist (instance=0x5555557e25c0, signal_id=<optimized out>, detail=0, var_args=var_args@entry=0x7fffff800840) at ././gobject/gsignal.c:3300 #45 0x00007ffff4242fbf in g_signal_emit (instance=instance@entry=0x5555557e25c0, signal_id=<optimized out>, detail=detail@entry=0) at ././gobject/gsignal.c:3447 #46 0x00007ffff4573154 in settings_backend_changed (target=0x5555557e25c0 [GSettings], backend=<optimized out>, key=<optimized out>, origin_tag=<optimized out>) at ././gio/gsettings.c:446 #47 0x00007ffff456e89a in g_settings_backend_invoke_closure (user_data=0x7fffdc40ce80) at ././gio/gsettingsbackend.c:267 #48 0x00007ffff3f4f725 in g_main_context_invoke_full (context=0x5555557c2f10, priority=0, function=0x7ffff456e880 <g_settings_backend_invoke_closure>, data=0x7fffdc40ce80, notify=0x0) at ././glib/gmain.c:5742 #49 0x00007ffff3f4f830 in g_main_context_invoke (context=<optimized out>, function=<optimized out>, data=<optimized out>) at ././glib/gmain.c:5703 #50 0x00007ffff456e9a8 in g_settings_backend_dispatch_signal (backend=0x555555863c90 [DConfSettingsBackend], function_offset=0, name=0x555555f04c60 "/apps/florence/window/scalex", origin_tag=0x0, names=0x0) at ././gio/gsettingsbackend.c:322 #51 0x00007fffe23dd344 in dconf_engine_emit_changes (engine=engine@entry=0x555555865af0, changeset=changeset@entry=0x555555f04980, origin_tag=origin_tag@entry=0x0) at dconf-engine.c:977 #52 0x00007fffe23de5a9 in dconf_engine_change_fast (engine=0x555555865af0, changeset=changeset@entry=0x555555f04980, origin_tag=origin_tag@entry=0x0, error=error@entry=0x0) at dconf-engine.c:1192 #53 0x00007fffe23dce9c in dconf_settings_backend_write (backend=0x555555863c90 [DConfSettingsBackend], key=0x555555f04260 "/apps/florence/window/scalex", value=0x555555f04ad0, origin_tag=0x0) at dconfsettingsbackend.c:76 #54 0x00007ffff456f3a4 in g_settings_backend_write (backend=0x555555863c90 [DConfSettingsBackend], key=key@entry=0x555555f04260 "/apps/florence/window/scalex", value=value@entry=0x555555f04ad0, origin_tag=origin_tag@entry=0x0) at ././gio/gsettingsbackend.c:783 #55 0x00007ffff4573df3 in g_settings_write_to_backend (settings=settings@entry=0x5555557e25c0 [GSettings], value=value@entry=0x555555f04ad0, key=<optimized out>) at ././gio/gsettings.c:1144 #56 0x00007ffff4575265 in g_settings_set_value (settings=0x5555557e25c0 [GSettings], key=key@entry=0x555555578638 "scalex", value=0x555555f04ad0) at ././gio/gsettings.c:1597 #57 0x00007ffff4575985 in g_settings_set_double (settings=<optimized out>, key=key@entry=0x555555578638 "scalex", value=value@entry=21) at ././gio/gsettings.c:2104 #58 0x0000555555568a52 in settings_set_double (item=item@entry=SETTINGS_SCALEX, value=21, b=b@entry=1) at settings.c:432 #59 0x0000555555566301 in key_release (key=key@entry=0x5555559078c0, status=status@entry=0x5555558a7800) at key.c:349 ... #71824 0x0000555555566301 in key_release (key=key@entry=0x5555559078c0, status=status@entry=0x5555558a7800) at key.c:349 #71825 0x0000555555570aa1 in status_release (status=0x5555558a7800, key=0x5555559078c0) at status.c:289 #71826 0x00005555555747b8 in fsm_process (status=status@entry=0x5555558a7800, key=0x5555559078c0, event=event@entry=FSM_RELEASE) at fsm.c:197 #71827 0x0000555555570906 in status_pressed_set (status=status@entry=0x5555558a7800, pressed=pressed@entry=0x0) at status.c:222 #71828 0x0000555555570a24 in status_focus_set (status=0x5555558a7800, focus=focus@entry=0x0) at status.c:183 #71829 0x000055555556e704 in view_update_extensions (settings=settings@entry=0x5555557e25c0 [GSettings], key=key@entry=0x55555588a31d "scalex", user_data=user_data@entry=0x555555907a30) at view.c:720 #71830 0x000055555556e7d1 in view_set_scalex (settings=0x5555557e25c0 [GSettings], key=0x55555588a31d "scalex", user_data=0x555555907a30) at view.c:735 #71834 0x00007ffff4242fbf in <emit signal changed:scalex on instance 0x5555557e25c0 [GSettings]> (instance=instance@entry=0x5555557e25c0, signal_id=<optimized out>, detail=<optimized out>) at ././gobject/gsignal.c:3447 #71831 0x00007ffff4227ecf in g_closure_invoke (closure=0x55555599c660, return_value=return_value@entry=0x0, n_param_values=2, param_values=param_values@entry=0x7fffffffca20, invocation_hint=invocation_hint@entry=0x7fffffffc9a0) at ././gobject/gclosure.c:804 #71832 0x00007ffff4239f82 in signal_emit_unlocked_R (node=node@entry=0x555555879a40, detail=detail@entry=1267, instance=instance@entry=0x5555557e25c0, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7fffffffca20) at ././gobject/gsignal.c:3635 #71833 0x00007ffff4242bdc in g_signal_emit_valist (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7fffffffcbe0) at ././gobject/gsignal.c:3391 #71835 0x00007ffff4573516 in g_settings_real_change_event (settings=0x5555557e25c0 [GSettings], keys=0x7fffffffd2a4, n_keys=<optimized out>) at ././gio/gsettings.c:386 #71836 0x00007fffecdb0038 in ffi_call_unix64 () at ../src/x86/unix64.S:76 #71837 0x00007fffecdafa9a in ffi_call (cif=cif@entry=0x7fffffffcf30, fn=fn@entry=0x7ffff45734a0 <g_settings_real_change_event>, rvalue=<optimized out>, avalue=avalue@entry=0x7fffffffce20) at ../src/x86/ffi64.c:525 #71838 0x00007ffff4228c8a in g_cclosure_marshal_generic_va (closure=0x555555879af0, return_value=0x7fffffffd0f0, instance=<optimized out>, args_list=<optimized out>, marshal_data=<optimized out>, n_params=2, param_types=0x555555879b20) at ././gobject/gclosure.c:1604 #71839 0x00007ffff42280f2 in _g_closure_invoke_va (closure=closure@entry=0x555555879af0, return_value=return_value@entry=0x7fffffffd0f0, instance=instance@entry=0x5555557e25c0, args=args@entry=0x7fffffffd1c0, n_params=2, param_types=0x555555879b20) at ././gobject/gclosure.c:867 #71840 0x00007ffff42423a1 in g_signal_emit_valist (instance=0x5555557e25c0, signal_id=<optimized out>, detail=0, var_args=var_args@entry=0x7fffffffd1c0) at ././gobject/gsignal.c:3300 #71841 0x00007ffff4242fbf in g_signal_emit (instance=instance@entry=0x5555557e25c0, signal_id=<optimized out>, detail=detail@entry=0) at ././gobject/gsignal.c:3447 #71842 0x00007ffff4573154 in settings_backend_changed (target=0x5555557e25c0 [GSettings], backend=<optimized out>, key=<optimized out>, origin_tag=<optimized out>) at ././gio/gsettings.c:446 #71843 0x00007ffff456e89a in g_settings_backend_invoke_closure (user_data=0x5555559fccc0) at ././gio/gsettingsbackend.c:267 #71844 0x00007ffff3f4f725 in g_main_context_invoke_full (context=0x5555557c2f10, priority=0, function=0x7ffff456e880 <g_settings_backend_invoke_closure>, data=0x5555559fccc0, notify=0x0) at ././glib/gmain.c:5742 #71845 0x00007ffff3f4f830 in g_main_context_invoke (context=<optimized out>, function=<optimized out>, data=<optimized out>) at ././glib/gmain.c:5703 #71846 0x00007ffff456e9a8 in g_settings_backend_dispatch_signal (backend=0x555555863c90 [DConfSettingsBackend], function_offset=0, name=0x5555559df350 "/apps/florence/window/scalex", origin_tag=0x0, names=0x0) at ././gio/gsettingsbackend.c:322 #71847 0x00007fffe23dd344 in dconf_engine_emit_changes (engine=engine@entry=0x555555865af0, changeset=changeset@entry=0x5555558e7830, origin_tag=origin_tag@entry=0x0) at dconf-engine.c:977 #71848 0x00007fffe23de5a9 in dconf_engine_change_fast (engine=0x555555865af0, changeset=changeset@entry=0x5555558e7830, origin_tag=origin_tag@entry=0x0, error=error@entry=0x0) at dconf-engine.c:1192 #71849 0x00007fffe23dce9c in dconf_settings_backend_write (backend=0x555555863c90 [DConfSettingsBackend], key=0x55555599ed60 "/apps/florence/window/scalex", value=0x55555594f040, origin_tag=0x0) at dconfsettingsbackend.c:76 #71850 0x00007ffff456f3a4 in g_settings_backend_write (backend=0x555555863c90 [DConfSettingsBackend], key=key@entry=0x55555599ed60 "/apps/florence/window/scalex", value=value@entry=0x55555594f040, origin_tag=origin_tag@entry=0x0) at ././gio/gsettingsbackend.c:783 #71851 0x00007ffff4573df3 in g_settings_write_to_backend (settings=settings@entry=0x5555557e25c0 [GSettings], value=value@entry=0x55555594f040, key=<optimized out>) at ././gio/gsettings.c:1144 #71852 0x00007ffff4575265 in g_settings_set_value (settings=0x5555557e25c0 [GSettings], key=key@entry=0x555555578638 "scalex", value=0x55555594f040) at ././gio/gsettings.c:1597 #71853 0x00007ffff4575985 in g_settings_set_double (settings=<optimized out>, key=key@entry=0x555555578638 "scalex", value=value@entry=21) at ././gio/gsettings.c:2104 #71854 0x0000555555568a52 in settings_set_double (item=item@entry=SETTINGS_SCALEX, value=21, b=b@entry=1) at settings.c:432 #71855 0x0000555555566301 in key_release (key=key@entry=0x5555559078c0, status=status@entry=0x5555558a7800) at key.c:349 #71856 0x0000555555570aa1 in status_release (status=0x5555558a7800, key=0x5555559078c0) at status.c:289 #71857 0x00005555555747b8 in fsm_process (status=status@entry=0x5555558a7800, key=0x5555559078c0, event=event@entry=FSM_RELEASE) at fsm.c:197 #71858 0x0000555555570906 in status_pressed_set (status=status@entry=0x5555558a7800, pressed=pressed@entry=0x0) at status.c:222 #71859 0x0000555555570a24 in status_focus_set (status=0x5555558a7800, focus=focus@entry=0x0) at status.c:183 #71860 0x000055555556e704 in view_update_extensions (settings=settings@entry=0x5555557e25c0 [GSettings], key=key@entry=0x55555588a31d "scalex", user_data=user_data@entry=0x555555907a30) at view.c:720 #71861 0x000055555556e7d1 in view_set_scalex (settings=0x5555557e25c0 [GSettings], key=0x55555588a31d "scalex", user_data=0x555555907a30) at view.c:735 #71865 0x00007ffff4242fbf in <emit signal changed:scalex on instance 0x5555557e25c0 [GSettings]> (instance=instance@entry=0x5555557e25c0, signal_id=<optimized out>, detail=<optimized out>) at ././gobject/gsignal.c:3447 #71862 0x00007ffff4227f75 in g_closure_invoke (closure=0x55555599c660, return_value=return_value@entry=0x0, n_param_values=2, param_values=param_values@entry=0x7fffffffd840, invocation_hint=invocation_hint@entry=0x7fffffffd7c0) at ././gobject/gclosure.c:804 #71863 0x00007ffff4239f82 in signal_emit_unlocked_R (node=node@entry=0x555555879a40, detail=detail@entry=1267, instance=instance@entry=0x5555557e25c0, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7fffffffd840) at ././gobject/gsignal.c:3635 #71864 0x00007ffff4242bdc in g_signal_emit_valist (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7fffffffda00) at ././gobject/gsignal.c:3391 #71866 0x00007ffff4573516 in g_settings_real_change_event (settings=0x5555557e25c0 [GSettings], keys=0x7fffffffe0c4, n_keys=<optimized out>) at ././gio/gsettings.c:386 #71867 0x00007fffecdb0038 in ffi_call_unix64 () at ../src/x86/unix64.S:76 ---Type <return> to continue, or q <return> to quit--- #71868 0x00007fffecdafa9a in ffi_call (cif=cif@entry=0x7fffffffdd50, fn=fn@entry=0x7ffff45734a0 <g_settings_real_change_event>, rvalue=<optimized out>, avalue=avalue@entry=0x7fffffffdc40) at ../src/x86/ffi64.c:525 #71869 0x00007ffff4228c8a in g_cclosure_marshal_generic_va (closure=0x555555879af0, return_value=0x7fffffffdf10, instance=<optimized out>, args_list=<optimized out>, marshal_data=<optimized out>, n_params=2, param_types=0x555555879b20) at ././gobject/gclosure.c:1604 #71870 0x00007ffff42281a4 in _g_closure_invoke_va (closure=closure@entry=0x555555879af0, return_value=return_value@entry=0x7fffffffdf10, instance=instance@entry=0x5555557e25c0, args=args@entry=0x7fffffffdfe0, n_params=<optimized out>, param_types=0x555555879b20) at ././gobject/gclosure.c:867 #71871 0x00007ffff42423a1 in g_signal_emit_valist (instance=0x5555557e25c0, signal_id=<optimized out>, detail=0, var_args=var_args@entry=0x7fffffffdfe0) at ././gobject/gsignal.c:3300 #71872 0x00007ffff4242fbf in g_signal_emit (instance=instance@entry=0x5555557e25c0, signal_id=<optimized out>, detail=detail@entry=0) at ././gobject/gsignal.c:3447 #71873 0x00007ffff4573154 in settings_backend_changed (target=0x5555557e25c0 [GSettings], backend=<optimized out>, key=<optimized out>, origin_tag=<optimized out>) at ././gio/gsettings.c:446 #71874 0x00007ffff456e89a in g_settings_backend_invoke_closure (user_data=0x5555559fca00) at ././gio/gsettingsbackend.c:267 #71875 0x00007ffff3f4f725 in g_main_context_invoke_full (context=0x5555557c2f10, priority=0, function=0x7ffff456e880 <g_settings_backend_invoke_closure>, data=0x5555559fca00, notify=0x0) at ././glib/gmain.c:5742 #71876 0x00007ffff3f4f830 in g_main_context_invoke (context=<optimized out>, function=<optimized out>, data=<optimized out>) at ././glib/gmain.c:5703 #71877 0x00007ffff456e9a8 in g_settings_backend_dispatch_signal (backend=0x555555863c90 [DConfSettingsBackend], function_offset=0, name=0x5555559c4f70 "/apps/florence/window/scalex", origin_tag=0x0, names=0x0) at ././gio/gsettingsbackend.c:322 #71878 0x00007fffe23dd344 in dconf_engine_emit_changes (engine=engine@entry=0x555555865af0, changeset=changeset@entry=0x5555558d8610, origin_tag=origin_tag@entry=0x0) at dconf-engine.c:977 #71879 0x00007fffe23de5a9 in dconf_engine_change_fast (engine=0x555555865af0, changeset=changeset@entry=0x5555558d8610, origin_tag=origin_tag@entry=0x0, error=error@entry=0x0) at dconf-engine.c:1192 #71880 0x00007fffe23dce9c in dconf_settings_backend_write (backend=0x555555863c90 [DConfSettingsBackend], key=0x555555acc9d0 "/apps/florence/window/scalex", value=0x5555558d8670, origin_tag=0x0) at dconfsettingsbackend.c:76 #71881 0x00007ffff456f3a4 in g_settings_backend_write (backend=0x555555863c90 [DConfSettingsBackend], key=key@entry=0x555555acc9d0 "/apps/florence/window/scalex", value=value@entry=0x5555558d8670, origin_tag=origin_tag@entry=0x0) at ././gio/gsettingsbackend.c:783 #71882 0x00007ffff4573df3 in g_settings_write_to_backend (settings=settings@entry=0x5555557e25c0 [GSettings], value=value@entry=0x5555558d8670, key=<optimized out>) at ././gio/gsettings.c:1144 #71883 0x00007ffff4575265 in g_settings_set_value (settings=0x5555557e25c0 [GSettings], key=key@entry=0x555555578638 "scalex", value=0x5555558d8670) at ././gio/gsettings.c:1597 #71884 0x00007ffff4575985 in g_settings_set_double (settings=<optimized out>, key=key@entry=0x555555578638 "scalex", value=value@entry=21) at ././gio/gsettings.c:2104 #71885 0x0000555555568a52 in settings_set_double (item=item@entry=SETTINGS_SCALEX, value=21, b=b@entry=1) at settings.c:432 #71886 0x0000555555566301 in key_release (key=key@entry=0x5555559078c0, status=status@entry=0x5555558a7800) at key.c:349 #71887 0x0000555555570aa1 in status_release (status=0x5555558a7800, key=0x5555559078c0) at status.c:289 #71888 0x00005555555747b8 in fsm_process (status=status@entry=0x5555558a7800, key=0x5555559078c0, event=event@entry=FSM_RELEASE) at fsm.c:197 #71889 0x0000555555570906 in status_pressed_set (status=0x5555558a7800, pressed=pressed@entry=0x0) at status.c:222 #71890 0x0000555555563b4f in flo_button_release_event (window=window@entry=0x55555590c290 [GtkWindow], event=0x5555557e5220, user_data=0x5555558a0600) at florence.c:170 #71895 0x00007ffff4242fbf in <emit signal ??? on instance 0x55555590c290 [GtkWindow]> (instance=instance@entry=0x55555590c290, signal_id=<optimized out>, detail=detail@entry=0) at ././gobject/gsignal.c:3447 #71891 0x00007ffff5ae6aac in _gtk_marshal_BOOLEAN__BOXED (closure=0x5555558f1fc0, return_value=0x7fffffffe5e0, n_param_values=<optimized out>, param_values=0x7fffffffe640, invocation_hint=<optimized out>, marshal_data=<optimized out>) at ././gtk/gtkmarshalers.c:86 #71892 0x00007ffff4227f75 in g_closure_invoke (closure=0x5555558f1fc0, return_value=return_value@entry=0x7fffffffe5e0, n_param_values=2, param_values=param_values@entry=0x7fffffffe640, invocation_hint=invocation_hint@entry=0x7fffffffe5c0) at ././gobject/gclosure.c:804 #71893 0x00007ffff4239f82 in signal_emit_unlocked_R (node=node@entry=0x555555852640, detail=detail@entry=0, instance=instance@entry=0x55555590c290, emission_return=emission_return@entry=0x7fffffffe750, instance_and_params=instance_and_params@entry=0x7fffffffe640) at ././gobject/gsignal.c:3635 #71894 0x00007ffff424267f in g_signal_emit_valist (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7fffffffe800) at ././gobject/gsignal.c:3401 #71896 0x00007ffff5c3357c in gtk_widget_event_internal (widget=0x55555590c290 [GtkWindow], event=0x5555557e5220) at ././gtk/gtkwidget.c:7724 #71897 0x00007ffff5c53fb3 in _gtk_window_check_handle_wm_event (event=event@entry=0x5555557e5220) at ././gtk/gtkwindow.c:8135 #71898 0x00007ffff5ae58c1 in gtk_main_do_event (event=0x5555557e5220) at ././gtk/gtkmain.c:1748 #71899 0x00007ffff55f6e15 in _gdk_event_emit (event=event@entry=0x5555557e5220) at ././gdk/gdkevents.c:73 #71900 0x00007ffff5627ea2 in gdk_event_source_dispatch (source=<optimized out>, callback=<optimized out>, user_data=<optimized out>) at ././gdk/x11/gdkeventsource.c:367 #71901 0x00007ffff3f4e7f7 in g_main_dispatch (context=0x5555557c2f10) at ././glib/gmain.c:3203 #71902 0x00007ffff3f4e7f7 in g_main_context_dispatch (context=context@entry=0x5555557c2f10) at ././glib/gmain.c:3856 #71903 0x00007ffff3f4ea60 in g_main_context_iterate (context=0x5555557c2f10, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ././glib/gmain.c:3929 #71904 0x00007ffff3f4ed82 in g_main_loop_run (loop=0x555555aed7b0) at ././glib/gmain.c:4125 #71905 0x00007ffff5ae4d55 in gtk_main () at ././gtk/gtkmain.c:1312 #71906 0x0000555555563298 in main (argc=<optimized out>, argv=<optimized out>) at main.c:139 (gdb) The crash happens the same way if "dbus-launch" (dbus-x11) is installed.
From 916c918aece83a7e5d91b83b8c430a8533dcaf3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bernhard=20=C3=9Cbelacker?= <bernha...@mailbox.org> Date: Tue, 9 May 2017 22:52:51 +0200 Subject: Avoid execution of function body if we are already executing it. https://bugs.debian.org/805895 --- src/view.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/view.c b/src/view.c index a001669..a05c954 100644 --- a/src/view.c +++ b/src/view.c @@ -722,9 +722,20 @@ void view_update_extensions(GSettings *settings, gchar *key, gpointer user_data) END_FUNC } +#define START_ONCE_ACTIVE \ + static int running; \ + if (!running) \ + running = TRUE; \ + else \ + return; + +#define END_ONCE_ACTIVE \ + running = FALSE; + /* Triggered by gconf when the "zoom" parameter is changed. */ void view_set_scalex(GSettings *settings, gchar *key, gpointer user_data) { + START_ONCE_ACTIVE START_FUNC struct view *view=(struct view *)user_data; /* Do not call configure signal handler */ @@ -734,11 +745,13 @@ void view_set_scalex(GSettings *settings, gchar *key, gpointer user_data) if (settings_get_bool(SETTINGS_KEEP_RATIO)) view->scaley=view->scalex; view_update_extensions(settings, key, user_data); END_FUNC + END_ONCE_ACTIVE } /* Triggered by gconf when the "zoom" parameter is changed. */ void view_set_scaley(GSettings *settings, gchar *key, gpointer user_data) { + START_ONCE_ACTIVE START_FUNC struct view *view=(struct view *)user_data; /* Do not call configure signal handler */ @@ -748,6 +761,7 @@ void view_set_scaley(GSettings *settings, gchar *key, gpointer user_data) if (settings_get_bool(SETTINGS_KEEP_RATIO)) view->scalex=view->scaley; view_update_extensions(settings, key, user_data); END_FUNC + END_ONCE_ACTIVE } /* Triggered by gconf when the "opacity" parameter is changed. */ -- 2.11.0