Crash in gcal_event_widget_get_event()
In current master, I get this crash when switching the month from April back to March and then back to February using the back button in month view. It crashes when displaying my February. 100% reproducible. Bisect result is:
There are only 'skip'ped commits left to test.
The first bad commit could be any of:
12fd607d56b2622c23d7e26f570d5d9d06756eb7
f3c3bbf5abdb5d8230e6e7c203f41e8dbb564193
16c156914ae1a945507d87c3762b90f43773eb6c
We cannot bisect more!
Backtrace:
Core was generated by `gnome-calendar'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0 0x0000000000452256 in GCAL_IS_EVENT_WIDGET (ptr=0x3fb9fb0)
at ../../../../Projects/gnome-calendar/src/gui/gcal-event-widget.h:31
31 G_DECLARE_FINAL_TYPE (GcalEventWidget, gcal_event_widget, GCAL, EVENT_WIDGET, GtkBin)
(gdb) bt full
#0 0x0000000000452256 in GCAL_IS_EVENT_WIDGET (ptr=0x3fb9fb0)
at ../../../../Projects/gnome-calendar/src/gui/gcal-event-widget.h:31
__inst = 0x3fb9fb0
Python Exception <class 'gdb.error'> No type named TypeNode.:
__t =
__r = 0
#1 0x000000000045456a in gcal_event_widget_get_event (self=0x3fb9fb0)
at ../../../../Projects/gnome-calendar/src/gui/gcal-event-widget.c:1148
__func__ = "gcal_event_widget_get_event"
#2 0x000000000045f733 in gcal_week_grid_remove_event
(self=0x1f996d0, uid=0x400a030 "8a780b3679ecd930c10a0b4eb5ecad836c14ae17:2dgkn1ru4o7qilpma64aeni984_R20200319T150000@google.com:20200319T110000") at ../../../../Projects/gnome-calendar/src/views/gcal-week-grid.c:1117
data = 0x3148fb0
event = 0x43f5ad
widgets = 0x1ed4940
i = 0
__func__ = "gcal_week_grid_remove_event"
#3 0x000000000042fd08 in gcal_week_view_remove_event (subscriber=0x1c85500, event=0x39ac8c0)
at ../../../../Projects/gnome-calendar/src/views/gcal-week-view.c:375
self = 0x1c85500
uuid = 0x400a030 "8a780b3679ecd930c10a0b4eb5ecad836c14ae17:2dgkn1ru4o7qilpma64aeni984_R20200319T150000@google.com:20200319T110000"
#4 0x0000000000446629 in remove_event_from_subscriber (subscriber=0x1c85500, event=0x39ac8c0)
at ../../../../Projects/gnome-calendar/src/core/gcal-timeline.c:193
#5 0x0000000000446bd0 in calculate_changed_events
(self=0x1cf1590, subscriber=0x1c85500, old_range=0x323d360, new_range=0x3e83180)
at ../../../../Projects/gnome-calendar/src/core/gcal-timeline.c:345
event = 0x39ac8c0
events_to_remove = 0x1f09600
events_to_add = 0x1efe040
old_range_start = 0x1ed52a0
old_range_end = 0x1e0eb40
new_range_start = 0x1ed5960
new_range_end = 0x1f02a20
range_diff = 1
i = 49
#6 0x0000000000446dea in update_subscriber_range (self=0x1cf1590, subscriber=0x1c85500)
at ../../../../Projects/gnome-calendar/src/core/gcal-timeline.c:405
old_range = 0x323d360
new_range = 0x3e83180
__func__ = "update_subscriber_range"
#7 0x0000000000447191 in on_subscriber_range_changed_cb (subscriber=0x1c85500, self=0x1cf1590)
at ../../../../Projects/gnome-calendar/src/core/gcal-timeline.c:543
#8 0x00007f73e40e388a in g_closure_invoke () at /lib64/libgobject-2.0.so.0
#9 0x00007f73e40f6463 in signal_emit_unlocked_R.isra.0 () at /lib64/libgobject-2.0.so.0
#10 0x00007f73e40fcad9 in g_signal_emit_valist () at /lib64/libgobject-2.0.so.0
#11 0x00007f73e40fcc43 in g_signal_emit () at /lib64/libgobject-2.0.so.0
#12 0x0000000000448418 in gcal_timeline_subscriber_range_changed (self=0x1c85500)
at ../../../../Projects/gnome-calendar/src/core/gcal-timeline-subscriber.c:79
__func__ = "gcal_timeline_subscriber_range_changed"
#13 0x000000000042f73a in gcal_week_view_set_date (view=0x1c85500, date=0x1f07c00)
at ../../../../Projects/gnome-calendar/src/views/gcal-week-view.c:202
self = 0x1c85500
--Type <RET> for more, q to quit, c to continue without paging--c
#14 0x000000000042ed1d in gcal_view_set_date (view=0x1c85500, date=0x1f07c00) at ../../../../Projects/gnome-calendar/src/views/gcal-view.c:119
__func__ = "gcal_view_set_date"
#15 0x0000000000422575 in update_active_date (window=0x1f80b70, new_date=0x1f07c00) at ../../../../Projects/gnome-calendar/src/gui/gcal-window.c:271
new_date_string = 0x3fc03d0 "02/15/2020 04:57:08 PM -0600"
i = GCAL_WINDOW_VIEW_WEEK
#16 0x0000000000422bbe in on_window_previous_date_activated_cb (action=0x1d04590, param=0x0, user_data=0x1f80b70) at ../../../../Projects/gnome-calendar/src/gui/gcal-window.c:432
previous_date = 0x1f07c00
self = 0x1f80b70
current_view = 0x2096220
#17 0x00007f73e40e388a in g_closure_invoke () at /lib64/libgobject-2.0.so.0
#18 0x00007f73e40f6463 in signal_emit_unlocked_R.isra.0 () at /lib64/libgobject-2.0.so.0
#19 0x00007f73e40fcad9 in g_signal_emit_valist () at /lib64/libgobject-2.0.so.0
#20 0x00007f73e40fcc43 in g_signal_emit () at /lib64/libgobject-2.0.so.0
#21 0x00007f73e42197b5 in g_simple_action_activate () at /lib64/libgio-2.0.so.0
#22 0x00007f73e49249f6 in gtk_action_muxer_activate_action (action_group=0x1f82640, action_name=0x21d6660 "win.previous-date", parameter=0x0) at /home/mcatanzaro/Projects/gtk/gtk/gtkactionmuxer.c:413
muxer = 0x1f82640
group = 0x1f82680
unprefixed_name = 0x21d6664 "previous-date"
#23 0x00007f73e4924a20 in gtk_action_muxer_activate_action (action_group=0x20e4e40, action_name=0x21d6660 "win.previous-date", parameter=0x0) at /home/mcatanzaro/Projects/gtk/gtk/gtkactionmuxer.c:415
muxer = 0x20e4e40
group = 0x0
unprefixed_name = 0x21d6664 "previous-date"
#24 0x00007f73e4924a20 in gtk_action_muxer_activate_action (action_group=0x21d9480, action_name=0x21d6660 "win.previous-date", parameter=0x0) at /home/mcatanzaro/Projects/gtk/gtk/gtkactionmuxer.c:415
muxer = 0x21d9480
group = 0x0
unprefixed_name = 0x21d6664 "previous-date"
#25 0x00007f73e4924a20 in gtk_action_muxer_activate_action (action_group=0x20e5240, action_name=0x21d6660 "win.previous-date", parameter=0x0) at /home/mcatanzaro/Projects/gtk/gtk/gtkactionmuxer.c:415
muxer = 0x20e5240
group = 0x0
unprefixed_name = 0x21d6664 "previous-date"
#26 0x00007f73e493a36c in gtk_action_helper_activate (helper=0x1c9e760) at /home/mcatanzaro/Projects/gtk/gtk/gtkactionhelper.c:597
__func__ = "gtk_action_helper_activate"
#27 0x00007f73e496dd77 in gtk_real_button_clicked (button=0x2171a40) at /home/mcatanzaro/Projects/gtk/gtk/gtkbutton.c:1975
priv = 0x21718c0
#28 0x00007f73e40e3ae6 in _g_closure_invoke_va () at /lib64/libgobject-2.0.so.0
#29 0x00007f73e40fc6c9 in g_signal_emit_valist () at /lib64/libgobject-2.0.so.0
#30 0x00007f73e40fcc43 in g_signal_emit () at /lib64/libgobject-2.0.so.0
#31 0x00007f73e496d0a2 in gtk_button_clicked (button=0x2171a40) at /home/mcatanzaro/Projects/gtk/gtk/gtkbutton.c:1541
__func__ = "gtk_button_clicked"
#32 0x00007f73e496d9e5 in gtk_button_do_release (button=0x2171a40, emit_clicked=1) at /home/mcatanzaro/Projects/gtk/gtk/gtkbutton.c:1845
priv = 0x21718c0
#33 0x00007f73e496dd3f in gtk_real_button_released (button=0x2171a40) at /home/mcatanzaro/Projects/gtk/gtk/gtkbutton.c:1963
#34 0x00007f73e40e3ae6 in _g_closure_invoke_va () at /lib64/libgobject-2.0.so.0
#35 0x00007f73e40fc6c9 in g_signal_emit_valist () at /lib64/libgobject-2.0.so.0
#36 0x00007f73e40fcc43 in g_signal_emit () at /lib64/libgobject-2.0.so.0
#37 0x00007f73e496b0fd in multipress_released_cb (gesture=0x21d88b0, n_press=1, x=22, y=32, widget=0x2171a40) at /home/mcatanzaro/Projects/gtk/gtk/gtkbutton.c:666
button = 0x2171a40
priv = 0x21718c0
sequence = 0x3c564d0
#38 0x00007f73e4d05268 in _gtk_marshal_VOID__INT_DOUBLE_DOUBLEv (closure=0x21d8600, return_value=0x0, instance=0x21d88b0, args=0x7ffedffc9f40, marshal_data=0x0, n_params=3, param_types=0x1fbc190) at gtkmarshalers.c:4803
cc = 0x21d8600
data1 = 0x21d88b0
data2 = 0x2171a40
callback = 0x7f73e496b0ae <multipress_released_cb>
arg0 = 1
arg1 = 22
arg2 = 32
args_copy = {{gp_offset = 32, fp_offset = 80, overflow_arg_area = 0x7ffedffca020, reg_save_area = 0x7ffedffc9f60}}
#39 0x00007f73e40e3ae6 in _g_closure_invoke_va () at /lib64/libgobject-2.0.so.0
#40 0x00007f73e40fc6c9 in g_signal_emit_valist () at /lib64/libgobject-2.0.so.0
#41 0x00007f73e40fcc43 in g_signal_emit () at /lib64/libgobject-2.0.so.0
#42 0x00007f73e4a7527f in gtk_gesture_multi_press_end (gesture=0x21d88b0, sequence=0x0) at /home/mcatanzaro/Projects/gtk/gtk/gtkgesturemultipress.c:287
multi_press = 0x21d88b0
priv = 0x21d8800
current = 0x0
x = 22
y = 32
interpreted = 1
state = GTK_EVENT_SEQUENCE_CLAIMED
#43 0x00007f73e40e6c84 in g_cclosure_marshal_VOID__BOXEDv () at /lib64/libgobject-2.0.so.0
#44 0x00007f73e40e3ae6 in _g_closure_invoke_va () at /lib64/libgobject-2.0.so.0
#45 0x00007f73e40fc6c9 in g_signal_emit_valist () at /lib64/libgobject-2.0.so.0
#46 0x00007f73e40fcc43 in g_signal_emit () at /lib64/libgobject-2.0.so.0
#47 0x00007f73e4a708f2 in _gtk_gesture_set_recognized (gesture=0x21d88b0, recognized=0, sequence=0x0) at /home/mcatanzaro/Projects/gtk/gtk/gtkgesture.c:346
priv = 0x21d8860
#48 0x00007f73e4a70a09 in _gtk_gesture_check_recognized (gesture=0x21d88b0, sequence=0x0) at /home/mcatanzaro/Projects/gtk/gtk/gtkgesture.c:387
priv = 0x21d8860
has_matching_touchpoints = 0
#49 0x00007f73e4a7163a in gtk_gesture_handle_event (controller=0x21d88b0, event=0x1cf98b0) at /home/mcatanzaro/Projects/gtk/gtk/gtkgesture.c:778
gesture = 0x21d88b0
sequence = 0x0
priv = 0x21d8860
source_device = 0x1c55ce0
was_recognized = 1
#50 0x00007f73e4a770ce in gtk_gesture_single_handle_event (controller=0x21d88b0, event=0x1cf98b0) at /home/mcatanzaro/Projects/gtk/gtk/gtkgesturesingle.c:222
sequence = 0x0
priv = 0x21d8840
source_device = 0x1c55ce0
source = GDK_SOURCE_MOUSE
button = 1
i = 30382256
retval = -468837120
test_touchscreen = 0
#51 0x00007f73e4a2a38f in gtk_event_controller_handle_event (controller=0x21d88b0, event=0x1cf98b0) at /home/mcatanzaro/Projects/gtk/gtk/gtkeventcontroller.c:230
controller_class = 0x1fb8b40
retval = 0
__func__ = "gtk_event_controller_handle_event"
#52 0x00007f73e4c933d2 in _gtk_widget_run_controllers (widget=0x2171a40, event=0x1cf98b0, phase=GTK_PHASE_BUBBLE) at /home/mcatanzaro/Projects/gtk/gtk/gtkwidget.c:7443
controller_phase = GTK_PHASE_BUBBLE
next = 0x0
data = 0x21d7760
handled = 0
priv = 0x2171950
l = 0x1e038e0 = {0x21d7760}
#53 0x00007f73e4c92c9f in gtk_widget_real_button_event (widget=0x2171a40, event=0x1cf98b0) at /home/mcatanzaro/Projects/gtk/gtk/gtkwidget.c:7204
#54 0x00007f73e4cfce90 in _gtk_marshal_BOOLEAN__BOXEDv (closure=0x1cba340, return_value=0x7ffedffca720, instance=0x2171a40, args=0x7ffedffca7f0, marshal_data=0x7f73e4c92c77 <gtk_widget_real_button_event>, n_params=1, param_types=0x1cc8d00) at gtkmarshalers.c:129
cc = 0x1cba340
data1 = 0x2171a40
data2 = 0x1c07d40
callback = 0x7f73e4c92c77 <gtk_widget_real_button_event>
v_return = 0
arg0 = 0x1cf98b0
args_copy = {{gp_offset = 32, fp_offset = 48, overflow_arg_area = 0x7ffedffca8d0, reg_save_area = 0x7ffedffca810}}
__func__ = "_gtk_marshal_BOOLEAN__BOXEDv"
#55 0x00007f73e40e3ae6 in _g_closure_invoke_va () at /lib64/libgobject-2.0.so.0
#56 0x00007f73e40fbe2b in g_signal_emit_valist () at /lib64/libgobject-2.0.so.0
#57 0x00007f73e40fcc43 in g_signal_emit () at /lib64/libgobject-2.0.so.0
#58 0x00007f73e4c93ded in gtk_widget_event_internal (widget=0x2171a40, event=0x1cf98b0) at /home/mcatanzaro/Projects/gtk/gtk/gtkwidget.c:7808
signal_num = 25
return_val = 0
handled = 0
__func__ = "gtk_widget_event_internal"
#59 0x00007f73e4c9324a in gtk_widget_event (widget=0x2171a40, event=0x1cf98b0) at /home/mcatanzaro/Projects/gtk/gtk/gtkwidget.c:7378
__func__ = "gtk_widget_event"
#60 0x00007f73e4ad92d7 in propagate_event_up (widget=0x2171a40, event=0x1cf98b0, topmost=0x0) at /home/mcatanzaro/Projects/gtk/gtk/gtkmain.c:2587
tmp = 0x7ffedffca9c0
handled_event = 0
#61 0x00007f73e4ad95bd in propagate_event (widget=0x2171a40, event=0x1cf98b0, captured=0, topmost=0x0) at /home/mcatanzaro/Projects/gtk/gtk/gtkmain.c:2690
handled_event = 0
propagate_func = 0x7f73e4c93120 <gtk_widget_event>
#62 0x00007f73e4ad968c in gtk_propagate_event (widget=0x2171a40, event=0x1cf98b0) at /home/mcatanzaro/Projects/gtk/gtk/gtkmain.c:2724
__func__ = "gtk_propagate_event"
#63 0x00007f73e4ad82e0 in gtk_main_do_event (event=0x1cf98b0) at /home/mcatanzaro/Projects/gtk/gtk/gtkmain.c:1920
event_widget = 0x2171a40
grab_widget = 0x2171a40
topmost_widget = 0x0
window_group = 0x2ef5670
rewritten_event = 0x0
device = 0x1c55b80
tmp_list = Python Exception <class 'gdb.MemoryError'> Cannot access memory at address 0x1:
#64 0x00007f73e471a70e in _gdk_event_emit (event=0x1cf98b0) at /home/mcatanzaro/Projects/gtk/gdk/gdkevents.c:73
#65 0x00007f73e4791551 in gdk_event_source_dispatch (base=0x1c8e200, callback=0x0, data=0x0) at /home/mcatanzaro/Projects/gtk/gdk/wayland/gdkeventsource.c:124
source = 0x1c8e200
display = 0x1c820d0
event = 0x1cf98b0
#66 0x00007f73e51047cf in g_main_context_dispatch () at /lib64/libglib-2.0.so.0
#67 0x00007f73e5104b58 in g_main_context_iterate.constprop () at /lib64/libglib-2.0.so.0
#68 0x00007f73e5104c23 in g_main_context_iteration () at /lib64/libglib-2.0.so.0
#69 0x00007f73e421066d in g_application_run () at /lib64/libgio-2.0.so.0
#70 0x00000000004206fe in main (argc=1, argv=0x7ffedffcadf8) at ../../../../Projects/gnome-calendar/src/main.c:39
app = 0x1c0b1e0