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

Reply via email to