For completeness, here is the backtrace at breakpoint on XSetInputFocus, on Debian unstable with debug symbols (before launching gdb, export DEBUGINFOD_URLS="https://debuginfod.debian.net" ).
(gdb) bt full #0 XSetInputFocus (dpy=0x5555555fda90, focus=focus@entry=41943047, revert_to=revert_to@entry=2, time=time@entry=0) at ../../src/SetIFocus.c:41 req = <optimized out> #1 0x00007ffff7f3678f in gdk_x11_window_focus (window=<optimized out>, timestamp=0) at ../../../gdk/x11/gdkwindow-x11.c:2326 display = 0x5555556110f0 [GdkX11Display] __func__ = "gdk_x11_window_focus" #2 0x00007ffff798cfeb in gtk_window_present_with_time (window=0x5555556e47c0 [XScreenSaverWindow], timestamp=0) at ../../../gtk/gtkwindow.c:10611 priv = <optimized out> widget = 0x5555556e47c0 [XScreenSaverWindow] gdk_window = 0x55555595ac30 [GdkX11Window] __func__ = "gtk_window_present_with_time" #3 0x000055555557009d in xscreensaver_app_activate (app=0x5555555da0f0 [XScreenSaverApp]) at demo-Gtk.c:5321 win = 0x5555556e47c0 [XScreenSaverWindow] debug_p = 1 dpy = 0x5555555fda90 #4 0x00007ffff70f55a9 in _g_closure_invoke_va (closure=closure@entry=0x5555555d4400, return_value=return_value@entry=0x0, instance=instance@entry=0x5555555da0f0, args=args@entry=0x7fffffffdc30, n_params=0, param_types=0x0) at ../../../gobject/gclosure.c:895 marshal = 0x7ffff70f3b60 <g_type_class_meta_marshalv> marshal_data = 0x90 in_marshal = 0 real_closure = 0x5555555d43e0 __func__ = "_g_closure_invoke_va" #5 0x00007ffff710ebbf in g_signal_emit_valist (instance=0x5555555da0f0, signal_id=8, detail=<optimized out>, var_args=var_args@entry=0x7fffffffdc30) at ../../../gobject/gsignal.c:3456 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}}} accumulator = 0x0 emission = {next = 0x0, instance = 0x5555555da0f0, ihint = {signal_id = 8, detail = 0, run_type = (G_SIGNAL_RUN_LAST | G_SIGNAL_ACCUMULATOR_FIRST_RUN)}, state = EMISSION_RUN, chain_type = 0x5555555d2640 [XScreenSaverApp/GtkApplication/GApplication]} instance_type = <optimized out> emission_return = {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}}} rtype = 0x4 [void] static_scope = 0 fastpath_handler = <optimized out> closure = <optimized out> run_type = <optimized out> hlist = <optimized out> l = <optimized out> fastpath = <optimized out> instance_and_params = <optimized out> signal_return_type = <optimized out> param_values = <optimized out> node = <optimized out> i = <optimized out> n_params = <optimized out> __func__ = "g_signal_emit_valist" #6 0x00007ffff710edbf in g_signal_emit (instance=instance@entry=0x5555555da0f0, signal_id=<optimized out>, detail=detail@entry=0) at ../../../gobject/gsignal.c:3606 var_args = {{gp_offset = 24, fp_offset = 48, overflow_arg_area = 0x7fffffffdd10, reg_save_area = 0x7fffffffdc50}} #7 0x00007ffff74ff0c3 in g_application_activate (application=application@entry=0x5555555da0f0 [XScreenSaverApp]) at ../../../gio/gapplication.c:2312 __func__ = "g_application_activate" #8 0x00007ffff74ff438 in g_application_real_local_command_line (application=0x5555555da0f0 [XScreenSaverApp], arguments=0x7fffffffdd78, exit_status=0x7fffffffdd74) at ../../../gio/gapplication.c:1148 error = 0x0 options = 0x5555555dbfa0 n_args = 1 #9 0x00007ffff74ff5c6 in g_application_run (application=0x5555555da0f0 [XScreenSaverApp], argc=<optimized out>, argv=<optimized out>) at ../../../gio/gapplication.c:2542 arguments = 0x5555555db710 status = -1 context = 0x5555555db770 acquired_context = <optimized out> __func__ = "g_application_run" #10 0x000055555557040b in main (argc=2, argv=0x7fffffffdf18) at demo-Gtk.c:5398 s = 0x7fffffffe2a6 "/xscreensaver-settings" (gdb) c Note that if I install an empty command (command 1, continue, end) at the breakpoint, the crash doesn't happen. So it is timing sensitive. I don't even know if the backtrace corresponds to the request in the crash, it is the only occurrence of XSetInputFocus when I have a breakpoint, but maybe it is different without. On another system I see two occurrences before the window comes up finished.