Use-after-free in mousepad_file_autosave_schedule
Description
I triggered this use-after-free while testing xfce/libxfce4ui!154 (merged).
I was repeatedly pasting URLs onto the same long line in mousepad. This caused mousepad to get slower, so I closed the application and discarded all changes. It looks like some clipboard data was received after that discard.
Backtrace
ERROR: AddressSanitizer: heap-use-after-free on address 0x50d000065d68 at pc 0x73db36eeee13 bp 0x7ffed8803730 sp 0x7ffed8803720
READ of size 8 at 0x50d000065d68 thread T0
#0 0x73db36eeee12 in mousepad_file_autosave_schedule mousepad/mousepad-file.c:1434
#1 0x73db3596c4ac in g_cclosure_marshal_VOID__VOID gobject/gmarshal.c:117
#2 0x73db35962d09 in g_closure_invoke gobject/gclosure.c:833
#3 0x73db359b7691 in signal_emit_unlocked_R gobject/gsignal.c:3902
#4 0x73db359bca23 in signal_emit_valist_unlocked gobject/gsignal.c:3534
#5 0x73db359cb2d3 in g_signal_emit_valist gobject/gsignal.c:3277
#6 0x73db359cb3fc in g_signal_emit gobject/gsignal.c:3597
#7 0x73db33dd4a16 in gtk_text_buffer_real_insert_text gtk/gtktextbuffer.c:916
#8 0x73db371871a4 (/usr/lib/libgtksourceview-4.so.0+0x1e1a4)
#9 0x73db33932744 in _gtk_marshal_VOID__BOXED_STRING_INT gtk/gtkmarshalers.c:3468
#10 0x73db3595a850 in g_type_class_meta_marshal gobject/gclosure.c:1034
#11 0x73db35962d09 in g_closure_invoke gobject/gclosure.c:833
#12 0x73db359b7bb4 in signal_emit_unlocked_R gobject/gsignal.c:3942
#13 0x73db359bca23 in signal_emit_valist_unlocked gobject/gsignal.c:3534
#14 0x73db359cb2d3 in g_signal_emit_valist gobject/gsignal.c:3277
#15 0x73db359cb3fc in g_signal_emit gobject/gsignal.c:3597
#16 0x73db33dd4b31 in gtk_text_buffer_emit_insert gtk/gtktextbuffer.c:937
#17 0x73db33ddd4ae in gtk_text_buffer_insert_interactive gtk/gtktextbuffer.c:1029
#18 0x73db33ddf744 in clipboard_text_received gtk/gtktextbuffer.c:3435
#19 0x73db33fab21b in request_text_received_func gtk/gtkclipboard.c:1068
#20 0x73db33fa945e in selection_received gtk/gtkclipboard.c:960
#21 0x73db3393316b in _gtk_marshal_VOID__BOXED_UINTv gtk/gtkmarshalers.c:3608
#22 0x73db359638ee in _g_closure_invoke_va gobject/gclosure.c:896
#23 0x73db359ba74f in signal_emit_valist_unlocked gobject/gsignal.c:3438
#24 0x73db359cb79f in g_signal_emit_by_name gobject/gsignal.c:3638
#25 0x73db33d6300b in gtk_selection_retrieval_report gtk/gtkselection.c:3190
#26 0x73db33d6c5d8 in _gtk_selection_notify gtk/gtkselection.c:2994
#27 0x73db339263a2 in _gtk_marshal_BOOLEAN__BOXEDv gtk/gtkmarshalers.c:130
#28 0x73db3595a263 in g_type_class_meta_marshalv gobject/gclosure.c:1061
#29 0x73db359638ee in _g_closure_invoke_va gobject/gclosure.c:896
#30 0x73db359ba74f in signal_emit_valist_unlocked gobject/gsignal.c:3438
#31 0x73db359cb2d3 in g_signal_emit_valist gobject/gsignal.c:3277
#32 0x73db359cb3fc in g_signal_emit gobject/gsignal.c:3597
#33 0x73db33f1d940 in gtk_widget_event_internal gtk/gtkwidget.c:7827
#34 0x73db33f23e8f in gtk_widget_event gtk/gtkwidget.c:7397
#35 0x73db33c39a77 in gtk_main_do_event gtk/gtkmain.c:1861
#36 0x73db330a6286 in _gdk_event_emit gdk/gdkevents.c:73
#37 0x73db3315fbe2 in gdk_event_source_dispatch gdk/x11/gdkeventsource.c:367
#38 0x73db34a9eb58 in g_main_dispatch glib/gmain.c:3398
#39 0x73db34a9eb58 in g_main_context_dispatch_unlocked glib/gmain.c:4249
#40 0x73db34aaba94 in g_main_context_iterate_unlocked glib/gmain.c:4314
#41 0x73db34aac70d in g_main_context_iteration glib/gmain.c:4379
#42 0x73db36435f58 in g_application_run gio/gapplication.c:2746
#43 0x5e0f09f8227d in main mousepad/main.c:50
0x50d000065d68 is located 24 bytes inside of 144-byte region [0x50d000065d50,0x50d000065de0)
freed by thread T0 here:
#0 0x73db372fc102 in free /usr/src/debug/gcc/gcc/libsanitizer/asan/asan_malloc_linux.cpp:52
#1 0x73db34ac9bad in g_free_sized glib/gmem.c:238
#2 0x73db359e41f6 in g_type_free_instance gobject/gtype.c:1980
#3 0x73db3597e743 in g_object_unref gobject/gobject.c:4525
#4 0x73db36ee0dec in mousepad_document_finalize mousepad/mousepad-document.c:324
#5 0x73db3597e701 in g_object_unref gobject/gobject.c:4509
#6 0x73db33a556ad in gtk_container_remove gtk/gtkcontainer.c:1911
#7 0x73db33c97ec3 in gtk_notebook_remove_page gtk/gtknotebook.c:6683
#8 0x73db36f37e19 in mousepad_window_close_document mousepad/mousepad-window.c:2443
#9 0x73db36f384c1 in mousepad_window_action_close_window mousepad/mousepad-window.c:5030
#10 0x73db35972b09 in g_cclosure_marshal_VOID__VARIANT gobject/gmarshal.c:1964
#11 0x73db35962d09 in g_closure_invoke gobject/gclosure.c:833
#12 0x73db359b7691 in signal_emit_unlocked_R gobject/gsignal.c:3902
#13 0x73db359bca23 in signal_emit_valist_unlocked gobject/gsignal.c:3534
#14 0x73db359cb2d3 in g_signal_emit_valist gobject/gsignal.c:3277
#15 0x73db359cb3fc in g_signal_emit gobject/gsignal.c:3597
#16 0x73db3645696c in g_simple_action_activate gio/gsimpleaction.c:215
#17 0x73db36451597 in g_action_activate gio/gaction.c:380
#18 0x73db364480c2 in g_simple_action_group_activate gio/gsimpleactiongroup.c:140
#19 0x73db36445a53 in g_action_group_activate_action gio/gactiongroup.c:624
#20 0x73db33989499 in gtk_application_window_activate_action gtk/gtkapplicationwindow.c:447
#21 0x73db36445a53 in g_action_group_activate_action gio/gactiongroup.c:624
#22 0x73db36f271d1 in mousepad_window_delete_event mousepad/mousepad-window.c:1469
#23 0x73db339263a2 in _gtk_marshal_BOOLEAN__BOXEDv gtk/gtkmarshalers.c:130
#24 0x73db3595a263 in g_type_class_meta_marshalv gobject/gclosure.c:1061
#25 0x73db359638ee in _g_closure_invoke_va gobject/gclosure.c:896
#26 0x73db359ba74f in signal_emit_valist_unlocked gobject/gsignal.c:3438
#27 0x73db359cb2d3 in g_signal_emit_valist gobject/gsignal.c:3277
#28 0x73db359cb3fc in g_signal_emit gobject/gsignal.c:3597
#29 0x73db33f1d940 in gtk_widget_event_internal gtk/gtkwidget.c:7827
#30 0x73db33f23e8f in gtk_widget_event gtk/gtkwidget.c:7397
#31 0x73db33c39b82 in gtk_main_do_event gtk/gtkmain.c:1823
#32 0x73db330a6286 in _gdk_event_emit gdk/gdkevents.c:73
#33 0x73db3315fbe2 in gdk_event_source_dispatch gdk/x11/gdkeventsource.c:367
#34 0x73db34a9eb58 in g_main_dispatch glib/gmain.c:3398
#35 0x73db34a9eb58 in g_main_context_dispatch_unlocked glib/gmain.c:4249
#36 0x73db34aaba94 in g_main_context_iterate_unlocked glib/gmain.c:4314
#37 0x73db34aad1f3 in g_main_loop_run glib/gmain.c:4516
#38 0x73db33fabcfc in gtk_clipboard_wait_for_contents gtk/gtkclipboard.c:1436
#39 0x73db33facae6 in gtk_clipboard_wait_is_rich_text_available gtk/gtkclipboard.c:1759
#40 0x73db33de047b in clipboard_clipboard_buffer_received gtk/gtktextbuffer.c:3658
#41 0x73db33fa945e in selection_received gtk/gtkclipboard.c:960
#42 0x73db3393316b in _gtk_marshal_VOID__BOXED_UINTv gtk/gtkmarshalers.c:3608
#43 0x73db359638ee in _g_closure_invoke_va gobject/gclosure.c:896
#44 0x73db359ba74f in signal_emit_valist_unlocked gobject/gsignal.c:3438
#45 0x73db359cb79f in g_signal_emit_by_name gobject/gsignal.c:3638
#46 0x73db33d6300b in gtk_selection_retrieval_report gtk/gtkselection.c:3190
#47 0x73db33d6c6df in _gtk_selection_notify gtk/gtkselection.c:2969
#48 0x73db339263a2 in _gtk_marshal_BOOLEAN__BOXEDv gtk/gtkmarshalers.c:130
#49 0x73db3595a263 in g_type_class_meta_marshalv gobject/gclosure.c:1061
#50 0x73db3596326e in _g_closure_invoke_va gobject/gclosure.c:896
#51 0x73db359ba74f in signal_emit_valist_unlocked gobject/gsignal.c:3438
#52 0x73db359cb2d3 in g_signal_emit_valist gobject/gsignal.c:3277
#53 0x73db359cb3fc in g_signal_emit gobject/gsignal.c:3597
#54 0x73db33f1d940 in gtk_widget_event_internal gtk/gtkwidget.c:7827
#55 0x73db33f23e8f in gtk_widget_event gtk/gtkwidget.c:7397
#56 0x73db33c39a77 in gtk_main_do_event gtk/gtkmain.c:1861
#57 0x73db330a6286 in _gdk_event_emit gdk/gdkevents.c:73
#58 0x73db3315fbe2 in gdk_event_source_dispatch gdk/x11/gdkeventsource.c:367
#59 0x73db34a9eb58 in g_main_dispatch glib/gmain.c:3398
#60 0x73db34a9eb58 in g_main_context_dispatch_unlocked glib/gmain.c:4249
#61 0x73db34aaba94 in g_main_context_iterate_unlocked glib/gmain.c:4314
#62 0x73db34aad1f3 in g_main_loop_run glib/gmain.c:4516
#63 0x73db33fabcfc in gtk_clipboard_wait_for_contents gtk/gtkclipboard.c:1436
#64 0x73db33facae6 in gtk_clipboard_wait_is_rich_text_available gtk/gtkclipboard.c:1759
#65 0x73db33de047b in clipboard_clipboard_buffer_received gtk/gtktextbuffer.c:3658
#66 0x73db33fa945e in selection_received gtk/gtkclipboard.c:960
#67 0x73db3393316b in _gtk_marshal_VOID__BOXED_UINTv gtk/gtkmarshalers.c:3608
#68 0x73db359638ee in _g_closure_invoke_va gobject/gclosure.c:896
#69 0x73db359ba74f in signal_emit_valist_unlocked gobject/gsignal.c:3438
#70 0x73db359cb79f in g_signal_emit_by_name gobject/gsignal.c:3638
#71 0x73db33d6300b in gtk_selection_retrieval_report gtk/gtkselection.c:3190
#72 0x73db33d6c6df in _gtk_selection_notify gtk/gtkselection.c:2969
#73 0x73db339263a2 in _gtk_marshal_BOOLEAN__BOXEDv gtk/gtkmarshalers.c:130
#74 0x73db3595a263 in g_type_class_meta_marshalv gobject/gclosure.c:1061
#75 0x73db359638ee in _g_closure_invoke_va gobject/gclosure.c:896
#76 0x73db359ba74f in signal_emit_valist_unlocked gobject/gsignal.c:3438
#77 0x73db359cb2d3 in g_signal_emit_valist gobject/gsignal.c:3277
#78 0x73db359cb3fc in g_signal_emit gobject/gsignal.c:3597
#79 0x73db33f1d940 in gtk_widget_event_internal gtk/gtkwidget.c:7827
#80 0x73db33f23e8f in gtk_widget_event gtk/gtkwidget.c:7397
#81 0x73db33c39a77 in gtk_main_do_event gtk/gtkmain.c:1861
#82 0x73db330a6286 in _gdk_event_emit gdk/gdkevents.c:73
#83 0x73db3315fbe2 in gdk_event_source_dispatch gdk/x11/gdkeventsource.c:367
#84 0x73db34a9eb58 in g_main_dispatch glib/gmain.c:3398
#85 0x73db34a9eb58 in g_main_context_dispatch_unlocked glib/gmain.c:4249
#86 0x73db34aaba94 in g_main_context_iterate_unlocked glib/gmain.c:4314
#87 0x73db34aac70d in g_main_context_iteration glib/gmain.c:4379
#88 0x73db36435b7e in g_application_run gio/gapplication.c:2715
#89 0x5e0f09f8227d in main mousepad/main.c:50
previously allocated by thread T0 here:
#0 0x73db372fd02a in calloc /usr/src/debug/gcc/gcc/libsanitizer/asan/asan_malloc_linux.cpp:77
#1 0x73db34ac9b11 in g_malloc0 glib/gmem.c:133
#2 0x73db359e9a56 in g_type_create_instance gobject/gtype.c:1883
#3 0x73db359812ca in g_object_new_internal gobject/gobject.c:2629
#4 0x73db35986661 in g_object_new_with_properties gobject/gobject.c:2792
#5 0x73db359889b6 in g_object_new gobject/gobject.c:2438
#6 0x73db36ef3b84 in mousepad_file_new mousepad/mousepad-file.c:310
#7 0x73db36ee016e in mousepad_document_init mousepad/mousepad-document.c:280
#8 0x73db359ea93c in g_type_create_instance gobject/gtype.c:1901
#9 0x73db359812ca in g_object_new_internal gobject/gobject.c:2629
#10 0x73db35986661 in g_object_new_with_properties gobject/gobject.c:2792
#11 0x73db359889b6 in g_object_new gobject/gobject.c:2438
#12 0x73db36ee321b in mousepad_document_new mousepad/mousepad-document.c:115
#13 0x73db36f41901 in mousepad_window_action_new mousepad/mousepad-window.c:4377
#14 0x73db35972b09 in g_cclosure_marshal_VOID__VARIANT gobject/gmarshal.c:1964
#15 0x73db35962d09 in g_closure_invoke gobject/gclosure.c:833
#16 0x73db359b7691 in signal_emit_unlocked_R gobject/gsignal.c:3902
#17 0x73db359bca23 in signal_emit_valist_unlocked gobject/gsignal.c:3534
#18 0x73db359cb2d3 in g_signal_emit_valist gobject/gsignal.c:3277
#19 0x73db359cb3fc in g_signal_emit gobject/gsignal.c:3597
#20 0x73db3645696c in g_simple_action_activate gio/gsimpleaction.c:215
#21 0x73db36451597 in g_action_activate gio/gaction.c:380
#22 0x73db364480c2 in g_simple_action_group_activate gio/gsimpleactiongroup.c:140
#23 0x73db36445a53 in g_action_group_activate_action gio/gactiongroup.c:624
#24 0x73db33989499 in gtk_application_window_activate_action gtk/gtkapplicationwindow.c:447
#25 0x73db36445a53 in g_action_group_activate_action gio/gactiongroup.c:624
#26 0x73db36ed469e in mousepad_application_activate mousepad/mousepad-application.c:1137
#27 0x73db3596c67f in g_cclosure_marshal_VOID__VOIDv gobject/gmarshal.c:165
#28 0x73db3595a263 in g_type_class_meta_marshalv gobject/gclosure.c:1061
#29 0x73db359638ee in _g_closure_invoke_va gobject/gclosure.c:896
#30 0x73db359ba74f in signal_emit_valist_unlocked gobject/gsignal.c:3438
#31 0x73db359cb2d3 in g_signal_emit_valist gobject/gsignal.c:3277
#32 0x73db359cb3fc in g_signal_emit gobject/gsignal.c:3597
#33 0x73db36433844 in g_application_activate gio/gapplication.c:2454
#34 0x73db36ed5965 in mousepad_application_command_line mousepad/mousepad-application.c:1097
#35 0x73db362e020f in _g_cclosure_marshal_INT__OBJECTv gio/gmarshal-internal.c:847
#36 0x73db3595a263 in g_type_class_meta_marshalv gobject/gclosure.c:1061
#37 0x73db359638ee in _g_closure_invoke_va gobject/gclosure.c:896
#38 0x73db359ba74f in signal_emit_valist_unlocked gobject/gsignal.c:3438
#39 0x73db359cb2d3 in g_signal_emit_valist gobject/gsignal.c:3277
#40 0x73db359cb3fc in g_signal_emit gobject/gsignal.c:3597
#41 0x73db364295b8 in g_application_call_command_line gio/gapplication.c:1103
#42 0x73db364349b7 in g_application_real_local_command_line gio/gapplication.c:1179
#43 0x73db3398303b in gtk_application_local_command_line gtk/gtkapplication.c:343
#44 0x73db36435442 in g_application_run gio/gapplication.c:2684
#45 0x5e0f09f8227d in main mousepad/main.c:50
Version info
59ae150c compiled on Arch Linux