GridView crash (floating point exception) when sorting and scrolling
Steps to reproduce
- Build a scrollable grid view using enough items in a list store that not all items are instantiated
- Call g_list_store_sort on the list store while scrolling
I've attached a small hacky patch that makes the gtk-demo Lists > Clocks demo reliably crash. This artificially adjusts the scroll position immediately after sorting but the crash doesn't require this and it can happen in response to normal user scrolling.
I've been unable to reproduce this in my real application using a ListView, only a GridView, but I haven't tried views other than those two yet.
Version information
Fedora 38, GTK 4.10.4. WM: x11/i3
Git head for gtk-demo with default options
Warnings
No warnings, just a core dump. zsh: floating point exception (core dumped) ./gtk4-demo
Backtrace
Demo, artificially triggered
#0 0x00007fc14e50a255 in gtk_grid_view_get_position_from_allocation (base=0x326f430, x=947, y=<optimized out>, position=0x7ffc89838a2c, area=0x7ffc89838a40) at ../gtk/gtkgridview.c:434
434 guint row_index = MIN (tile->area.height - 1, y - tile->area.y) / (row_height + yspacing);
[Current thread is 1 (Thread 0x7fc14ce1c980 (LWP 1945486))]
(gdb) bt full
#0 0x00007fc14e50a255 in gtk_grid_view_get_position_from_allocation (base=0x326f430, x=947, y=<optimized out>, position=0x7ffc89838a2c, area=0x7ffc89838a40) at ../gtk/gtkgridview.c:434
rows_in_tile = <optimized out>
row_height = 0
row_index = <optimized out>
xspacing = 0
yspacing = 0
self = 0x326f430
tile = 0x3812220
pos = 9222
#1 0x00007fc14e529ac7 in gtk_list_base_get_position_from_allocation (area=0x7ffc89838a40, pos=0x7ffc89838a2c, along=0, across=947, self=0x326f430) at ../gtk/gtklistbase.c:144
priv = 0x326f240
area = {x = 0, y = 0, width = 1894, height = 240}
cell_area = {x = 810, y = 0, width = 270, height = 0}
along = 0
across = 947
total_size = 528730
align_across = <optimized out>
align_along = <optimized out>
side_across = <optimized out>
side_along = <optimized out>
pos = 32764
__func__ = "gtk_list_base_adjustment_value_changed_cb"
#2 gtk_list_base_adjustment_value_changed_cb (adjustment=<optimized out>, self=0x326f430) at ../gtk/gtklistbase.c:212
priv = 0x326f240
area = {x = 0, y = 0, width = 1894, height = 240}
cell_area = {x = 810, y = 0, width = 270, height = 0}
along = 0
across = 947
total_size = 528730
align_across = <optimized out>
align_along = <optimized out>
side_across = <optimized out>
side_along = <optimized out>
pos = 32764
__func__ = "gtk_list_base_adjustment_value_changed_cb"
#3 0x00007fc14e1884ea in g_closure_invoke (closure=0x37d2d90, return_value=0x0, n_param_values=1, param_values=0x7ffc89838c30, invocation_hint=0x7ffc89838bb0) at ../gobject/gclosure.c:832
marshal = 0x7fc14e18d4d0 <g_cclosure_marshal_VOID__VOID>
marshal_data = 0x0
in_marshal = 0
real_closure = 0x37d2d70
__func__ = "g_closure_invoke"
#4 0x00007fc14e1b6e16 in signal_emit_unlocked_R.isra.0 (node=node@entry=0x277ec00, detail=detail@entry=0, instance=instance@entry=0x2af5ef0, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7ffc89838c30)
at ../gobject/gsignal.c:3812
tmp = <optimized out>
handler = 0x34208f0
accumulator = 0x0
emission = {next = 0x0, instance = 0x2af5ef0, ihint = {signal_id = 144, detail = 0, run_type = (G_SIGNAL_RUN_FIRST | G_SIGNAL_ACCUMULATOR_FIRST_RUN)}, state = EMISSION_RUN, chain_type = 0x4}
handler_list = 0x27f71d0
return_accu = 0x0
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 = 144
max_sequential_handler_number = 8741
return_value_altered = <optimized out>
#5 0x00007fc14e1a7cbd in g_signal_emit_valist (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7ffc89838dd0) at ../gobject/gsignal.c:3565
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 0x00007fc14e1a7f33 in g_signal_emit (instance=instance@entry=0x2af5ef0, signal_id=<optimized out>, detail=detail@entry=0) at ../gobject/gsignal.c:3622
var_args = {{gp_offset = 24, fp_offset = 48, overflow_arg_area = 0x7ffc89838eb0, reg_save_area = 0x7ffc89838df0}}
#7 0x00007fc14e461947 in emit_value_changed (adjustment=0x2af5ef0) at ../gtk/gtkadjustment.c:321
priv = <optimized out>
#8 adjustment_set_value (adjustment=0x2af5ef0, value=<optimized out>) at ../gtk/gtkadjustment.c:442
priv = <optimized out>
#9 0x0000000000438c18 in sort_and_scroll (data=data@entry=0x27f11f0) at ../demos/gtk-demo/listview_clocks.c:408
sw = 0x27f11f0
adj = 0x2af5ef0
grid = <optimized out>
selection = <optimized out>
store = <optimized out>
#10 0x00007fc14e230c69 in g_timeout_dispatch (source=0x3420840, callback=0x438bd0 <sort_and_scroll>, user_data=0x27f11f0) at ../glib/gmain.c:5054
timeout_source = 0x3420840
again = <optimized out>
#11 0x00007fc14e23039c in g_main_dispatch (context=0x2518850) at ../glib/gmain.c:3460
dispatch = 0x7fc14e230c40 <g_timeout_dispatch>
prev_source = 0x0
begin_time_nsec = 73049581053749
was_in_call = 0
user_data = 0x27f11f0
callback = 0x438bd0 <sort_and_scroll>
cb_funcs = 0x7fc14e31b380 <g_source_callback_funcs>
cb_data = 0x34208c0
need_destroy = <optimized out>
source = 0x3420840
current = 0x252e1b0
i = 0
#12 g_main_context_dispatch (context=0x2518850) at ../glib/gmain.c:4200
#13 0x00007fc14e28e438 in g_main_context_iterate.isra.0 (context=0x2518850, block=1, dispatch=1, self=<optimized out>) at ../glib/gmain.c:4276
max_priority = 2147483647
timeout = 3
some_ready = 1
nfds = 2
allocated_nfds = <optimized out>
fds = <optimized out>
begin_time_nsec = 73049577982422
#14 0x00007fc14e22da23 in g_main_context_iteration (context=context@entry=0x2518850, may_block=may_block@entry=1) at ../glib/gmain.c:4343
retval = <optimized out>
#15 0x00007fc14e089ffd in g_application_run (application=application@entry=0x25110f0, argc=argc@entry=1, argv=argv@entry=0x7ffc89839258) at ../gio/gapplication.c:2573
arguments = 0x25177f0
status = 0
context = 0x2518850
acquired_context = <optimized out>
__func__ = "g_application_run"
#16 0x0000000000426e09 in main (argc=1, argv=0x7ffc89839258) at ../demos/gtk-demo/main.c:1127
app = 0x25110f0
app_entries = {{name = 0x46425a "about", activate = 0x451060 <activate_about>, parameter_type = 0x0, state = 0x0, change_state = 0x0, padding = {0, 0, 0}}, {name = 0x46422d "quit", activate = 0x450ff0 <activate_quit>, parameter_type = 0x0, state = 0x0, change_state = 0x0, padding = {0, 0, 0}}, {name = 0x47105b "inspector", activate = 0x450fe0 <activate_inspector>, parameter_type = 0x0, state = 0x0, change_state = 0x0, padding = {0, 0, 0}}}
accels = {{action_and_target = 0x470fcb "app.about", accelerators = {0x470fd5 "F1", 0x0}}, {action_and_target = 0x470fd8 "app.quit", accelerators = {0x470fe1 "<Control>q", 0x0}}}
i = 2
Real application, real mouse scrolling
#0 0x00007f1f39216220 in gtk_grid_view_get_position_from_allocation (base=0x55d009af1250, x=947, y=442551, position=0x7ffc1ce6cb48,
area=0x7ffc1ce6cb50) at ../gtk/gtkgridview.c:373
373 guint row_index = MIN (tile->area.height - 1, y - tile->area.y) / (row_height + yspacing);
[Current thread is 1 (Thread 0x7f1f379445c0 (LWP 2070394))]
Missing separate debuginfos, use: dnf debuginfo-install xorg-x11-drv-nvidia-libs-535.54.03-2.fc38.x86_64
(gdb) bt full
#0 0x00007f1f39216220 in gtk_grid_view_get_position_from_allocation
(base=0x55d009af1250, x=947, y=442551, position=0x7ffc1ce6cb48, area=0x7ffc1ce6cb50) at ../gtk/gtkgridview.c:373
rows_in_tile = 15407
row_height = 0
row_index = <optimized out>
xspacing = 0
yspacing = 0
tile = <optimized out>
pos = 0
#1 0x00007f1f39239281 in gtk_list_base_get_position_from_allocation
(area=0x7ffc1ce6cb50, pos=0x7ffc1ce6cb48, along=442551, across=947, self=0x55d009af1250) at ../gtk/gtklistbase.c:143
priv = <optimized out>
area = {x = 0, y = 442551, width = 1894, height = 658}
cell_area = {x = 0, y = 32764, width = 1894, height = 32764}
along = 442551
across = 947
total_size = 459000
align_across = <optimized out>
align_along = <optimized out>
side_across = <optimized out>
side_along = <optimized out>
pos = 162551936
__func__ = "gtk_list_base_adjustment_value_changed_cb"
#2 gtk_list_base_adjustment_value_changed_cb (adjustment=0x55d009aed2d0, self=0x55d009af1250) at ../gtk/gtklistbase.c:211
priv = <optimized out>
area = {x = 0, y = 442551, width = 1894, height = 658}
cell_area = {x = 0, y = 32764, width = 1894, height = 32764}
along = 442551
across = 947
total_size = 459000
align_across = <optimized out>
align_along = <optimized out>
side_across = <optimized out>
side_along = <optimized out>
pos = 162551936
__func__ = "gtk_list_base_adjustment_value_changed_cb"
#3 0x00007f1f38ea34ea in g_closure_invoke
(closure=0x55d009b05880, return_value=0x0, n_param_values=1, param_values=0x7ffc1ce6cd60, invocation_hint=0x7ffc1ce6cce0)
at ../gobject/gclosure.c:832
marshal = 0x7f1f38ea84d0 <g_cclosure_marshal_VOID__VOID>
marshal_data = 0x0
in_marshal = 0
real_closure = 0x55d009b05860
__func__ = "g_closure_invoke"
#4 0x00007f1f38ed1e16 in signal_emit_unlocked_R.isra.0
(node=node@entry=0x55d009a2f740, detail=detail@entry=0, instance=instance@entry=0x55d009aed2d0, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7ffc1ce6cd60) at ../gobject/gsignal.c:3812
tmp = <optimized out>
handler = 0x55d009b03d10
accumulator = 0x0
emission = {next = 0x7ffc1ce6d180, instance = 0x55d009aed2d0, ihint = {signal_id = 138, detail = 0, run_type = (G_SIGNAL_RUN_FIRST | G_SIGNAL_ACCUMULATOR_FIRST_RUN)}, state = EMISSION_RUN, chain_type = 0x4}
handler_list = 0x55d009af0840
return_accu = 0x0
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 = 138
max_sequential_handler_number = 3408
return_value_altered = <optimized out>
#5 0x00007f1f38ec2cbd in g_signal_emit_valist
(instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7ffc1ce6cf00)
at ../gobject/gsignal.c:3565
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 0x00007f1f38ec2f33 in g_signal_emit (instance=instance@entry=0x55d009aed2d0, signal_id=<optimized out>, detail=detail@entry=0)
at ../gobject/gsignal.c:3622
var_args = {{gp_offset = 24, fp_offset = 48, overflow_arg_area = 0x7ffc1ce6cfe0, reg_save_area = 0x7ffc1ce6cf20}}
#7 0x00007f1f3917e067 in emit_value_changed (adjustment=0x55d009aed2d0) at ../gtk/gtkadjustment.c:321
priv = <optimized out>
#8 adjustment_set_value (adjustment=0x55d009aed2d0, value=<optimized out>) at ../gtk/gtkadjustment.c:442
priv = <optimized out>
#9 0x00007f1f392a6c61 in _gtk_scrolled_window_set_adjustment_value
(scrolled_window=scrolled_window@entry=0x55d009ae7350, adjustment=adjustment@entry=0x55d009aed2d0, value=442551.65145103005)
at ../gtk/gtkscrolledwindow.c:3228
priv = <optimized out>
lower = -100
upper = <optimized out>
prev_value = 0x55d009ae71f8
edge_pos = <optimized out>
vertical = <optimized out>
#10 0x00007f1f392a6f9f in scrolled_window_scroll
(scrolled_window=0x55d009ae7350, delta_x=<optimized out>, delta_y=75.651451030026237, scroll=0x55d009ae8b60)
at ../gtk/gtkscrolledwindow.c:1372
adj = 0x55d009aed2d0
new_value = <optimized out>
scroll_unit = <optimized out>
priv = 0x55d009ae7040
shifted = <optimized out>
state = <optimized out>
#11 0x00007f1f392a725c in scroll_controller_scroll
(scroll=<optimized out>, delta_x=<optimized out>, delta_y=<optimized out>, scrolled_window=<optimized out>)
at ../gtk/gtkscrolledwindow.c:1402
priv = <optimized out>
#12 0x00007f1f3917222f in _gtk_marshal_BOOLEAN__DOUBLE_DOUBLEv
(closure=<optimized out>, return_value=0x7ffc1ce6d1b0, instance=<optimized out>, args=<optimized out>, marshal_data=<optimized out>, n_params=<optimized out>, param_types=0x55d009a2f230) at gtk/gtkmarshalers.c:220
cc = <optimized out>
data1 = <optimized out>
data2 = <optimized out>
callback = <optimized out>
v_return = <optimized out>
arg0 = 1894
arg1 = 0
args_copy = {{gp_offset = 24, fp_offset = 80, overflow_arg_area = 0x7ffc1ce6d360, reg_save_area = 0x7ffc1ce6d2a0}}
__func__ = "_gtk_marshal_BOOLEAN__DOUBLE_DOUBLEv"
#13 0x00007f1f38ec2dba in _g_closure_invoke_va
(param_types=0x55d009a2f230, n_params=<optimized out>, args=0x7ffc1ce6d280, instance=0x55d009ae8b60, return_value=0x7ffc1ce6d1b0, closure=0x55d009a96d20) at ../gobject/gclosure.c:895
marshal = <optimized out>
marshal_data = <optimized out>
in_marshal = 0
real_closure = 0x55d009a96d00
return_accu = 0x7ffc1ce6d1b0
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 = Python Exception <class 'TypeError'>: can only concatenate str (not "NoneType") to str
{next = 0x7ffc1ce6d810, instance = 0x55d009ae8b60, ihint = {signal_id = 134, detail = 0, run_type = (G_SIGNAL_RUN_FIRST | G_SIGNAL_ACCUMULATOR_FIRST_RUN)}, state = EMISSION_RUN, chain_type = }
instance_type = Python Exception <class 'TypeError'>: can only concatenate str (not "NoneType") to str
emission_return = {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}}}
rtype = 0x14
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"
#14 g_signal_emit_valist (instance=0x55d009ae8b60, signal_id=134, detail=0, var_args=var_args@entry=0x7ffc1ce6d280)
at ../gobject/gsignal.c:3472
return_accu = 0x7ffc1ce6d1b0
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 = Python Exception <class 'TypeError'>: can only concatenate str (not "NoneType") to str
{next = 0x7ffc1ce6d810, instance = 0x55d009ae8b60, ihint = {signal_id = 134, detail = 0, run_type = (G_SIGNAL_RUN_FIRST | G_SIGNAL_ACCUMULATOR_FIRST_RUN)}, state = EMISSION_RUN, chain_type = }
instance_type = Python Exception <class 'TypeError'>: can only concatenate str (not "NoneType") to str
emission_return = {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}}}
rtype = 0x14
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"
#15 0x00007f1f38ec2f33 in g_signal_emit (instance=instance@entry=0x55d009ae8b60, signal_id=<optimized out>, detail=detail@entry=0)
at ../gobject/gsignal.c:3622
var_args = {{gp_offset = 24, fp_offset = 48, overflow_arg_area = 0x7ffc1ce6d360, reg_save_area = 0x7ffc1ce6d2a0}}
#16 0x00007f1f391df9e2 in gtk_event_controller_scroll_handle_event
(controller=0x55d009ae8b60, event=0x55d00a014d40, x=<optimized out>, y=<optimized out>) at ../gtk/gtkeventcontrollerscroll.c:493
scroll = 0x55d009ae8b60
direction = <optimized out>
dx = 0
dy = 1
handled = 0
event_type = <optimized out>
scroll_unit = GDK_SCROLL_UNIT_WHEEL
#17 0x00007f1f3932c9cf in gtk_event_controller_handle_event
(y=<optimized out>, x=<optimized out>, target=<optimized out>, event=<optimized out>, controller=0x55d009ae8b60)
at ../gtk/gtkeventcontroller.c:362
controller_class = 0x55d009a2f3b0
priv = <optimized out>
retval = 0
this_handled = <optimized out>
is_gesture = <optimized out>
controller_phase = <optimized out>
next = 0x55d009ae8570 = {0x55d009ae84b0, 0x55d009ae81b0, 0x55d009ae7ee0, 0x55d009ae7d70, 0x55d009ae7a60, 0x55d009ae7440}
priv = 0x55d009ae7200
controller = 0x55d009ae8b60
handled = 0
l = <optimized out>
#18 gtk_widget_run_controllers
(widget=widget@entry=0x55d009ae7350, event=event@entry=0x55d00a014d40, target=target@entry=0x55d00a14d010, x=0, y=0, phase=phase@entry=GTK_PHASE_BUBBLE) at ../gtk/gtkwidget.c:4570
this_handled = <optimized out>
is_gesture = <optimized out>
controller_phase = <optimized out>
next = 0x55d009ae8570 = {0x55d009ae84b0, 0x55d009ae81b0, 0x55d009ae7ee0, 0x55d009ae7d70, 0x55d009ae7a60, 0x55d009ae7440}
priv = 0x55d009ae7200
controller = 0x55d009ae8b60
handled = 0
l = <optimized out>
#19 0x00007f1f3932cd3d in gtk_widget_event (target=0x55d00a14d010, event=0x55d00a014d40, widget=0x55d009ae7350)
at ../gtk/gtkwidget.c:4764
return_val = <optimized out>
x = 0
y = 0
#20 gtk_widget_event (widget=0x55d009ae7350, event=0x55d00a014d40, target=0x55d00a14d010) at ../gtk/gtkwidget.c:4740
#21 0x00007f1f3955c2da in gtk_propagate_event_internal.isra.0 (widget=0x55d009ae7350, event=0x55d00a014d40, topmost=<optimized out>)
at ../gtk/gtkmain.c:1956
handled_event = 0
target = 0x55d00a14d010
widget_array = {start = 0x7ffc1ce6d4d8, end = 0x7ffc1ce6d528, end_allocation = 0x7ffc1ce6d558, preallocated = {0x55d00a14d010, 0x55d00a14c750, 0x55d00a14acd0, 0x55d00a14a380, 0x55d009af1250, 0x55d009ae7350, 0x55d009ad0b90, 0x55d009a68ac0, 0x55d009ad0370, 0x55d0099c5410, 0x55d00a014d40, 0x7ffc1ce6d540, 0x7f1f38eca316, 0x7ffc1ce6d560, 0x7f1f39346aa5, 0x7ffc1ce6d560}}
i = 5
#22 0x00007f1f3924b13c in gtk_main_do_event (event=0x55d00a014d40) at ../gtk/gtkmain.c:1698
event_widget = <optimized out>
target_widget = <optimized out>
grab_widget = 0x55d00a14d010
window_group = 0x55d00a012f80
rewritten_event = <optimized out>
tmp_list = <optimized out>
#23 0x00007f1f3933b504 in surface_event () at ../gtk/gtkwindow.c:4748
#24 0x00007f1f391760b4 in _gtk_marshal_BOOLEAN__OBJECT
(closure=0x55d009f942c0, return_value=0x7ffc1ce6d840, param_values=0x7ffc1ce6d8a0, marshal_data=<optimized out>, invocation_hint=<optimized out>, n_param_values=<optimized out>) at gtk/gtkmarshalers.c:830
data1 = 0x55d009b0c190
data2 = <optimized out>
callback = 0x7f1f3933b4e0 <surface_event>
v_return = <optimized out>
#25 0x00007f1f394fa8d6 in _gdk_marshal_BOOLEAN__POINTER
(marshal_data=0x0, invocation_hint=<optimized out>, param_values=0x7ffc1ce6d8a0, n_param_values=2, return_value=0x7ffc1ce6d840, closure=0x55d009f942c0) at gdk/gdkmarshalers.c:244
cc = 0x55d009f942c0
event = 0x55d00a014d40
#26 gdk_surface_event_marshaller
(closure=0x55d009f942c0, return_value=0x7ffc1ce6d840, n_param_values=2, param_values=0x7ffc1ce6d8a0, invocation_hint=<optimized out>, marshal_data=0x0) at ../gdk/gdksurface.c:435
event = 0x55d00a014d40
#27 0x00007f1f38ea34ea in g_closure_invoke
(closure=0x55d009f942c0, return_value=0x7ffc1ce6d840, n_param_values=2, param_values=0x7ffc1ce6d8a0, invocation_hint=0x7ffc1ce6d820) at ../gobject/gclosure.c:832
marshal = 0x7f1f394fa880 <gdk_surface_event_marshaller>
marshal_data = 0x0
in_marshal = 0
real_closure = 0x55d009f942a0
__func__ = "g_closure_invoke"
#28 0x00007f1f38ed1e16 in signal_emit_unlocked_R.isra.0
(node=<optimized out>, detail=detail@entry=0, instance=instance@entry=0x55d009b0c190, emission_return=emission_return@entry=0x7ffc1ce6d9b0, instance_and_params=instance_and_params@entry=0x7ffc1ce6d8a0) at ../gobject/gsignal.c:3812
tmp = <optimized out>
handler = 0x55d009f94260
accumulator = 0x55d0098dc900
emission = {next = 0x0, instance = 0x55d009b0c190, ihint = {signal_id = 27, detail = 0, run_type = G_SIGNAL_RUN_FIRST}, state = EMISSION_RUN, chain_type = 0x4}
handler_list = 0x55d009b0c920
return_accu = 0x7ffc1ce6d840
accu = {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}}}
signal_id = 27
max_sequential_handler_number = 3408
return_value_altered = <optimized out>
#29 0x00007f1f38ec27e2 in g_signal_emit_valist
(instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7ffc1ce6da60)
at ../gobject/gsignal.c:3575
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}}}
error = 0x0
rtype = 0x14
static_scope = 0
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"
#30 0x00007f1f38ec2f33 in g_signal_emit (instance=instance@entry=0x55d009b0c190, signal_id=<optimized out>, detail=detail@entry=0)
at ../gobject/gsignal.c:3622
var_args = {{gp_offset = 32, fp_offset = 48, overflow_arg_area = 0x7ffc1ce6db40, reg_save_area = 0x7ffc1ce6da80}}
#31 0x00007f1f395514f7 in gdk_surface_handle_event.isra.0 (event=0x55d00a014d40) at ../gdk/gdksurface.c:2956
surface = 0x55d009b0c190
begin_time = 74219972967472
handled = 0
#32 0x00007f1f394cda76 in gdk_event_source_dispatch.lto_priv () at ../gdk/x11/gdkeventsource.c:418
#33 0x00007f1f38da239c in g_main_dispatch (context=0x55d0098eb620) at ../glib/gmain.c:3460
dispatch = 0x7f1f394cda50 <gdk_event_source_dispatch.lto_priv>
prev_source = 0x0
begin_time_nsec = 74219972967341
was_in_call = 0
user_data = 0x0
callback = 0x0
cb_funcs = 0x0
cb_data = 0x0
need_destroy = <optimized out>
source = 0x55d0098eb580
current = 0x55d00997b520
i = 0
#34 g_main_context_dispatch (context=0x55d0098eb620) at ../glib/gmain.c:4200
#35 0x00007f1f38e00438 in g_main_context_iterate.isra.0 (context=0x55d0098eb620, block=1, dispatch=1, self=<optimized out>)
at ../glib/gmain.c:4276
max_priority = 0
timeout = 0
some_ready = 1
nfds = 2
allocated_nfds = <optimized out>
fds = <optimized out>
begin_time_nsec = 74219972966239
#36 0x00007f1f38d9fa23 in g_main_context_iteration (context=context@entry=0x55d0098eb620, may_block=may_block@entry=1)
at ../glib/gmain.c:4343
retval = <optimized out>
#37 0x00007f1f38fd6ffd in g_application_run (application=0x55d009a36040, argc=<optimized out>, argv=0x7f1e800241c0)
at ../gio/gapplication.c:2573
arguments = 0x55d009a0b540
status = 0
context = 0x55d0098eb620
acquired_context = <optimized out>
__func__ = "g_application_run"
#38 0x000055d009130696 in <O as gio::application::ApplicationExtManual>::run::hc5929f09aa54cb95 ()