Fix crash on quit

Fixes crash on exit by applying Nathan's suggestion (#2358 (comment 692546246)) and making desktop widget own and delete CanvasGrid. That logic around ownership there is shaky.

This issue was exposed by merging of improved canvas repaint MR.

Original crash backtrace:

Gtk:ERROR:../gtk/gtkwidget.c:5871:gtk_widget_get_frame_clock: assertion failed: (window != NULL)
Bail out! Gtk:ERROR:../gtk/gtkwidget.c:5871:gtk_widget_get_frame_clock: assertion failed: (window != NULL)
Process 28541 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGABRT
    frame #0: 0x00000001a87719b8 libsystem_kernel.dylib`__pthread_kill + 8
libsystem_kernel.dylib`__pthread_kill:
->  0x1a87719b8 <+8>:  b.lo   0x1a87719d8               ; <+40>
    0x1a87719bc <+12>: pacibsp
    0x1a87719c0 <+16>: stp    x29, x30, [sp, #-0x10]!
    0x1a87719c4 <+20>: mov    x29, sp
Target 0: (inkscape) stopped.
(lldb) bt
* thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGABRT
  * frame #0: 0x00000001a87719b8 libsystem_kernel.dylib`__pthread_kill + 8
    frame #1: 0x00000001a87a4eb0 libsystem_pthread.dylib`pthread_kill + 288
    frame #2: 0x00000001a86e2314 libsystem_c.dylib`abort + 164
    frame #3: 0x0000000100f5b6e0 libglib-2.0.0.dylib`g_assertion_message + 464
    frame #4: 0x0000000100f5b754 libglib-2.0.0.dylib`g_assertion_message_expr + 116
    frame #5: 0x0000000102ab48f0 libgtk-3.0.dylib`gtk_widget_get_frame_clock + 196
    frame #6: 0x0000000102ac78cc libgtk-3.0.dylib`unref_tick_callback_info + 124
    frame #7: 0x0000000102ab494c libgtk-3.0.dylib`gtk_widget_on_frame_clock_update + 92
    frame #8: 0x000000010050e5b8 libgobject-2.0.0.dylib`_g_closure_invoke_va + 320
    frame #9: 0x0000000100524380 libgobject-2.0.0.dylib`g_signal_emit_valist + 1220
    frame #10: 0x0000000100524b24 libgobject-2.0.0.dylib`g_signal_emit + 28
    frame #11: 0x00000001013c3e6c libgdk-3.0.dylib`gdk_frame_clock_paint_idle + 644
    frame #12: 0x00000001013ad1bc libgdk-3.0.dylib`gdk_threads_dispatch + 88
    frame #13: 0x0000000100f2e370 libglib-2.0.0.dylib`g_timeout_dispatch + 28
    frame #14: 0x0000000100f329bc libglib-2.0.0.dylib`g_main_context_dispatch + 336
    frame #15: 0x0000000100f32d50 libglib-2.0.0.dylib`g_main_context_iterate + 520
    frame #16: 0x0000000100f32e10 libglib-2.0.0.dylib`g_main_context_iteration + 112
    frame #17: 0x0000000100dd1340 libgio-2.0.0.dylib`g_application_run + 544
    frame #18: 0x000000010000f564 inkscape`main(argc=<unavailable>, argv=<unavailable>) at inkscape-main.cpp:259:60 [opt]
Edited by Mike Kowalski

Merge request reports

Loading