phase1geo / Minder

Mind-mapping application for Elementary OS
GNU General Public License v3.0
976 stars 70 forks source link

Crash when pasting into a blank document #589

Closed prokoudine closed 5 months ago

prokoudine commented 6 months ago

Minder 1.16.0 (fresh git build, really) on Ubuntu 23.10.

  1. Open an existing mindmap
  2. Select a node with all its child nodes
  3. Create a new document
  4. Kill the default root node
  5. Ctrl+V to paste
  6. Minder crashes immediately
Thread 1 "com.github.phas" received signal SIGSEGV, Segmentation fault.
draw_area_paste_as_nodes (self=0x555557976d00 [DrawArea], node=0x0, 
    text=0x555557b26d60 "<?xml version=\"1.0\"?>\n<minder>\n  <nodes>\n    <node id=\"0\" posx=\"579\" posy=\"321\" width=\"123\" height=\"47\" side=\"right\" fold=\"false\" treesize=\"329\" color=\"#f5c211\" layout=\"Horizontal\" group=\"false\">\n    "...)
    at ../src/DrawArea.vala:5239
5239            _nodes.index( _nodes.length - 1 ).layout.position_root( _nodes.index( _nodes.length - 1 ), nodes.index( i ) );
(gdb) bt
#0  draw_area_paste_as_nodes
    (self=0x555557976d00 [DrawArea], node=0x0, text=0x555557b26d60 "<?xml version=\"1.0\"?>\n<minder>\n  <nodes>\n    <node id=\"0\" posx=\"579\" posy=\"321\" width=\"123\" height=\"47\" side=\"right\" fold=\"false\" treesize=\"329\" color=\"#f5c211\" layout=\"Horizontal\" group=\"false\">\n    "...) at ../src/DrawArea.vala:5239
#1  0x00005555555e17f7 in draw_area_paste_nodes
    (self=0x555557976d00 [DrawArea], text=0x555557b26d60 "<?xml version=\"1.0\"?>\n<minder>\n  <nodes>\n    <node id=\"0\" posx=\"579\" posy=\"321\" width=\"123\" height=\"47\" side=\"right\" fold=\"false\" treesize=\"329\" color=\"#f5c211\" layout=\"Horizontal\" group=\"false\">\n    "..., shift=0) at ../src/DrawArea.vala:5330
#2  0x0000555555591bc4 in ___lambda52_ (_data4_=0x5555578a4460, c=0x555556fc21d0 [GtkClipboard], raw_data=0x7fffffffc3b0)
    at ../src/Clipboard.vala:192
#3  0x0000555555591c09 in ____lambda52__gtk_clipboard_received_func
    (clipboard=0x555556fc21d0 [GtkClipboard], selection_data=0x7fffffffc3b0, self=0x5555578a4460) at ../src/Clipboard.vala:189
#4  0x00007ffff7580657 in selection_received (widget=0x555556fc2a10 [GtkInvisible], selection_data=0x7fffffffc3b0, time=<optimized out>)
    at ../../../gtk/gtkclipboard.c:960
#8  0x00007ffff7f60e96 in <emit signal '0x7ffff7627b27 "selection-received"' on instance 0x555556fc2a10 [GtkInvisible]>
    (instance=0x555556fc2a10, detailed_signal=detailed_signal@entry=0x7ffff7627b27 "selection-received") at ../../../gobject/gsignal.c:3716
    #5  0x00007ffff72993ca in _gtk_marshal_VOID__BOXED_UINTv
    (closure=0x555555e7aca0, return_value=<optimized out>, instance=0x555556fc2a10, args=<optimized out>, marshal_data=<optimized out>, n_params=<optimized out>, param_types=0x55555594b050) at gtk/gtkmarshalers.c:3608
    #6  0x00007ffff7f60add in _g_closure_invoke_va
    (param_types=0x55555594b050, n_params=<optimized out>, args=0x7fffffffc240, instance=0x555556fc2a10, return_value=0x0, closure=0x555555e7aca0) at ../../../gobject/gclosure.c:895
    #7  signal_emit_valist_unlocked
    (instance=instance@entry=0x555556fc2a10, signal_id=signal_id@entry=104, detail=<optimized out>, var_args=var_args@entry=0x7fffffffc240)
    at ../../../gobject/gsignal.c:3516
#9  0x00007ffff748691d in gtk_selection_retrieval_report
    (time=213606765, length=<optimized out>, buffer=<optimized out>, format=<optimized out>, type=<optimized out>, info=0x555557ae1770)
    at ../../../gtk/gtkselection.c:3194
#10 gtk_selection_convert (widget=0x555556fc2a10 [GtkInvisible], selection=0x45, target=0xd4, time_=213606765)
    at ../../../gtk/gtkselection.c:1192
#11 0x00005555555925e4 in minder_clipboard_paste (da=0x555557976d00 [DrawArea], shift=0) at ../src/Clipboard.vala:189
#12 0x00005555555e185f in draw_area_do_paste (self=0x555557976d00 [DrawArea], shift=0) at ../src/DrawArea.vala:5336
#13 0x00005555555d8b6e in draw_area_on_keypress (self=0x555557976d00 [DrawArea], e=0x555557bd1670) at ../src/DrawArea.vala:4698
#14 0x00005555555ac493 in _draw_area_on_keypress_gtk_widget_key_press_event
--Type <RET> for more, q to quit, c to continue without paging--c
    (_sender=0x555557976d00 [DrawArea], event=0x555557bd1670, self=0x555557976d00)
    at /home/alex/soft/desktop/minder/minder/build/DrawArea.c:4211
#15 0x00007ffff729ce9c in _gtk_marshal_BOOLEAN__BOXED
    (closure=0x555557a442c0, return_value=0x7fffffffce10, param_values=0x7fffffffcea0, marshal_data=<optimized out>, invocation_hint=<optimized out>, n_param_values=<optimized out>) at gtk/gtkmarshalers.c:84
#16 0x00007ffff7f42130 in g_closure_invoke
    (closure=0x555557a442c0, return_value=0x7fffffffce10, n_param_values=2, param_values=0x7fffffffcea0, invocation_hint=0x7fffffffcdf0)
    at ../../../gobject/gclosure.c:832
#17 0x00007ffff7f6f4ac in signal_emit_unlocked_R.isra.0
    (node=node@entry=0x7fffffffcf90, detail=detail@entry=0, instance=instance@entry=0x555557976d00, emission_return=emission_return@entry=0x7fffffffd010, instance_and_params=instance_and_params@entry=0x7fffffffcea0) at ../../../gobject/gsignal.c:3980
#18 0x00007ffff7f60312 in signal_emit_valist_unlocked
    (instance=instance@entry=0x555557976d00, signal_id=signal_id@entry=91, detail=detail@entry=0, var_args=var_args@entry=0x7fffffffd0f0)
    at ../../../gobject/gsignal.c:3625
#19 0x00007ffff7f60bd6 in g_signal_emit_valist (instance=0x555557976d00, signal_id=91, detail=0, var_args=var_args@entry=0x7fffffffd0f0)
    at ../../../gobject/gsignal.c:3355
#20 0x00007ffff7f60c93 in g_signal_emit (instance=instance@entry=0x555557976d00, signal_id=<optimized out>, detail=detail@entry=0)
    at ../../../gobject/gsignal.c:3675
#21 0x00007ffff754f154 in gtk_widget_event_internal.part.0.lto_priv.0 (widget=0x555557976d00 [DrawArea], event=0x555557bd1670)
    at ../../../gtk/gtkwidget.c:7812
#22 0x00007ffff756343b in gtk_window_propagate_key_event
    (window=window@entry=0x555555a1b0f0 [MainWindow], event=event@entry=0x555557bd1670) at ../../../gtk/gtkwindow.c:8408
#23 0x00007ffff756660b in gtk_window_key_press_event (widget=0x555555a1b0f0 [MainWindow], event=0x555557bd1670)
    at ../../../gtk/gtkwindow.c:8441
#28 0x00007ffff7f60c93 in <emit signal 'key-press-event' on instance 0x555555a1b0f0 [MainWindow]>
    (instance=instance@entry=0x555555a1b0f0, signal_id=<optimized out>, detail=detail@entry=0) at ../../../gobject/gsignal.c:3675
    #24 0x00007ffff72980d8 in _gtk_marshal_BOOLEAN__BOXEDv
    (closure=0x5555559b2410, return_value=0x7fffffffd410, instance=<optimized out>, args=<optimized out>, marshal_data=<optimized out>, n_params=<optimized out>, param_types=0x5555559b2440) at gtk/gtkmarshalers.c:130
    #25 0x00007ffff7f60add in _g_closure_invoke_va
    (param_types=0x5555559b2440, n_params=<optimized out>, args=0x7fffffffd4f0, instance=0x555555a1b0f0, return_value=0x7fffffffd410, closure=0x5555559b2410) at ../../../gobject/gclosure.c:895
    #26 signal_emit_valist_unlocked
    (instance=instance@entry=0x555555a1b0f0, signal_id=signal_id@entry=91, detail=detail@entry=0, var_args=var_args@entry=0x7fffffffd4f0)
    at ../../../gobject/gsignal.c:3516
    #27 0x00007ffff7f60bd6 in g_signal_emit_valist
    (instance=0x555555a1b0f0, signal_id=91, detail=0, var_args=var_args@entry=0x7fffffffd4f0) at ../../../gobject/gsignal.c:3355
#29 0x00007ffff754f154 in gtk_widget_event_internal.part.0.lto_priv.0 (widget=0x555555a1b0f0 [MainWindow], event=0x555557bd1670)
    at ../../../gtk/gtkwidget.c:7812
#30 0x00007ffff73f7bcf in propagate_event
    (widget=widget@entry=0x555555a1b0f0 [MainWindow], event=event@entry=0x555557bd1670, captured=captured@entry=0, topmost=topmost@entry=0x0) at ../../../gtk/gtkmain.c:2691
#31 0x00007ffff73f7c40 in gtk_propagate_event (event=0x555557bd1670, widget=0x555555a1b0f0 [MainWindow]) at ../../../gtk/gtkmain.c:2735
#32 0x00007ffff73f85f6 in gtk_main_do_event (event=0x555557bd1670) at ../../../gtk/gtkmain.c:1921
#33 gtk_main_do_event (event=<optimized out>) at ../../../gtk/gtkmain.c:1691
#34 0x00007ffff7a798b7 in _gdk_event_emit (event=0x555557bd1670) at ../../../gdk/gdkevents.c:73
#35 _gdk_event_emit (event=0x555557bd1670) at ../../../gdk/gdkevents.c:67
#36 0x00007ffff7acfb16 in gdk_event_source_dispatch.lto_priv () at ../../../gdk/x11/gdkeventsource.c:354
#37 0x00007ffff7e40b2c in g_main_dispatch (context=0x55555594f720) at ../../../glib/gmain.c:3476
#38 0x00007ffff7e9c46f in g_main_context_dispatch_unlocked (context=0x55555594f720) at ../../../glib/gmain.c:4284
#39 g_main_context_iterate_unlocked.isra.0 (context=0x55555594f720, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>)
    at ../../../glib/gmain.c:4349
#40 0x00007ffff7e4146f in g_main_loop_run (loop=0x5555570df5d0) at ../../../glib/gmain.c:4551
#41 0x00007ffff73f61ed in gtk_main () at ../../../gtk/gtkmain.c:1329
#42 0x0000555555578923 in minder_real_activate (base=0x555555943d50 [Minder]) at ../src/Application.vala:155
#46 0x00007ffff7f60c93 in <emit signal 'activate' on instance 0x555555943d50 [Minder]>
    (instance=instance@entry=0x555555943d50, signal_id=<optimized out>, detail=detail@entry=0) at ../../../gobject/gsignal.c:3675
    #43 0x00007ffff7f60add in _g_closure_invoke_va
    (param_types=0x0, n_params=<optimized out>, args=0x7fffffffdac0, instance=0x555555943d50, return_value=0x0, closure=0x5555559412e0)
    at ../../../gobject/gclosure.c:895
    #44 signal_emit_valist_unlocked
    (instance=instance@entry=0x555555943d50, signal_id=signal_id@entry=8, detail=detail@entry=0, var_args=var_args@entry=0x7fffffffdac0)
    at ../../../gobject/gsignal.c:3516
    #45 0x00007ffff7f60bd6 in g_signal_emit_valist (instance=0x555555943d50, signal_id=8, detail=0, var_args=var_args@entry=0x7fffffffdac0)
    at ../../../gobject/gsignal.c:3355
#47 0x00007ffff709d533 in g_application_activate (application=0x555555943d50 [Minder]) at ../../../gio/gapplication.c:2316
#48 0x00007ffff70a29a8 in g_application_real_local_command_line
    (application=0x555555943d50 [Minder], arguments=0x7fffffffdc08, exit_status=0x7fffffffdc04) at ../../../gio/gapplication.c:1152
#49 0x00007ffff70a2af8 in g_application_run (application=0x555555943d50 [Minder], argc=<optimized out>, argv=0x7fffffffddd8)
    at ../../../gio/gapplication.c:2546
#50 0x000055555557b034 in minder_main (args=0x7fffffffddd8, args_length1=1) at ../src/Application.vala:282
#51 0x000055555557b07b in main (argc=1, argv=0x7fffffffddd8) at ../src/Application.vala:266
phase1geo commented 6 months ago

I have committed a fix to the master branch which fixes this issue.