Reproducible every time: Start Xiphos, open parallel tab, close it, open it again, crash.
(xiphos:2242593): GLib-GObject-CRITICAL **: 08:55:15.399: invalid unclassed pointer in cast to 'GtkWidget'
(xiphos:2242593): Gtk-CRITICAL **: 08:55:15.399: gtk_widget_get_realized: assertion 'GTK_IS_WIDGET (widget)' failed
Thread 1 "xiphos" received signal SIGSEGV, Segmentation fault.
0x00007ffff1d35228 in g_type_check_instance_cast () from /lib64/libgobject-2.0.so.0
(gdb) bt 10
#0 0x00007ffff1d35228 in g_type_check_instance_cast () at /lib64/libgobject-2.0.so.0
#1 0x000000000048fe11 in main_update_parallel_page_detached () at /home/karl/src/bible/xiphos/src/main/parallel_view.cc:952
#2 0x000000000043a774 in on_entry_activate (entry=0xb096810, user_data=0x0) at /home/karl/src/bible/xiphos/src/gtk/navbar_versekey_parallel.c:328
#3 0x00007ffff1d0da2c in g_closure_invoke () at /lib64/libgobject-2.0.so.0
#4 0x00007ffff1d2baba in signal_emit_unlocked_R.isra.0 () at /lib64/libgobject-2.0.so.0
#5 0x00007ffff1d2daf6 in signal_emit_valist_unlocked () at /lib64/libgobject-2.0.so.0
#6 0x00007ffff1d2dd68 in g_signal_emit_valist () at /lib64/libgobject-2.0.so.0
#7 0x00007ffff1d2de23 in g_signal_emit () at /lib64/libgobject-2.0.so.0
#8 0x00007ffff18ebe4c in gtk_widget_activate () at /lib64/libgtk-3.so.0
#9 0x00000000004a9cd9 in show_parallel (svalue=0xe872b70 "1Cor 8:7", stype=0x59f3660 "verse", clicked=1) at /home/karl/src/bible/xiphos/src/main/url.cc:271
(More stack frames follow...)
(gdb) up
#1 0x000000000048fe11 in main_update_parallel_page_detached () at /home/karl/src/bible/xiphos/src/main/parallel_view.cc:952
952 !gtk_widget_get_realized(GTK_WIDGET(widgets.html_parallel_dialog)))
(gdb) l
947 SWBuf text("");
948 gchar buf[5000];
949 gint modidx, parallel_count, fraction;
950
951 if (!widgets.html_parallel_dialog ||
952 !gtk_widget_get_realized(GTK_WIDGET(widgets.html_parallel_dialog)))
953 return;
954
955 /* how big a pile of parallels have we got? */
956 if (settings.parallel_list == NULL)
(gdb) p widgets
$1 = {app = 0x5f5830, appbar = 0x5ec430, vboxMain = 0xc6fbe0, page = 0xc39010, epaned = 0x235d9f0, paned_sidebar = 0x58f2520, box_side_preview = 0x58f2c60, vpaned = 0x25e71e0, vpaned2 = 0x3253670,
hpaned = 0x2da3b50, bible_info_paned = 0x0, shortcutbar = 0x58f2520, bookmark_tree = 0x5917720, ctree_widget_books = 0x0, workbook_lower = 0x0, notebook_gbs = 0x0, notebook_dict = 0x0,
all_strongs = 0x23602f0, box_comm = 0x303d5c0, notebook_bible_parallel = 0x27837b0, notebook_text = 0x28b18b0, notebook_percomm = 0x0, notebook_sidebar = 0x58fb890, notebook_comm_book = 0x243dd70,
notebook_main = 0x243f430, notebook_dict_devot = 0x2951530, vbox_text = 0x3132640, box_dict = 0x276a880, vbox_previewer = 0x2c1cb90, parallel_tab = 0xe88b110, dock_sb = 0x0, frame_parallel = 0x0,
studypad_dialog = 0x0, entry_dict = 0x27637d0, toolbar_comments = 0x0, toolbar_studypad = 0x0, eventbox1 = 0x0, html_search_report = 0x0, html_parallel = 0xac6a860,
html_parallel_dialog = 0x4ba3690, html_text = 0x31317d0, html_comm = 0x2dde300, html_percomm = 0x0, html_dict = 0x2aad340, html_devotional = 0x4a68c70, html_book = 0x273dd30, html_studypad = 0x0,
html_previewer = 0x0, html_previewer_text = 0x29a0bc0, cb_books = 0x0, listview_dict = 0x0, store = 0x0, label_comm = 0x0, label_dict = 0x0, comboboxentry_dict = 0x0, entry_devotional = 0x2364fa0,
button_devotional_date = 0x30e7ce0, popover_devotional = 0x2f30cc0, calendar_devotional = 0x2f4e230, add_bookmark_submenu = 0x0, viewtexts_item = 0x2e6a470, viewpreview_item = 0x3169ed0,
parallel_tab_item = 0x3225690, side_preview_item = 0x3226460, viewcomms_item = 0x318ee40, viewdicts_item = 0x339f5c0, linkedtabs_item = 0x2622140, showversenum_item = 0x2623a90,
readaloud_item = 0x2622da0, versehighlight_item = 0x29aba20, annotate_highlight_item = 0x29aca10, xrefs_in_verse_list_item = 0x0, new_journal_item = 0x33287b0, button_dict_book = 0x0,
button_new_tab = 0x3203a50, button_dict_back = 0x2d2c3b0, button_dict_forward = 0x2409730, hboxtb = 0x3030b40}
(gdb) p widgets.html_parallel
$2 = 0xac6a860
(gdb) p widgets.html_parallel_dialog
$3 = 0x4ba3690
(gdb) p *(widgets.html_parallel)
$4 = {parent_instance = {g_type_instance = {g_class = Python Exception <class 'gdb.error'>: No type named TypeNode.
}, ref_count = 1, qdata = 0xac74a70}, priv = 0xac6a770}
(gdb) p *(widgets.html_parallel_dialog)
$5 = {parent_instance = {g_type_instance = {g_class = <error reading variable: Cannot access memory at address 0x140>}, ref_count = 32, qdata = 0x4ba7d13}, priv = 0x333a30322073}
Well...
Something has (recently?) chosen to take the route through the dialog code when it should not even think to do so.
Reproducible every time: Start Xiphos, open parallel tab, close it, open it again, crash.
Why does it test
html_parallel_dialogwhenhtml_parallelshould be what's under consideration for parallel tab? It's not opening the separate "dialog" window, it's opening the tab. No wonder that what's in the "dialog" structure isn't reliable.Well...
git blamesays I wrote those few lines of code (951-953) in 2012. But I never personally use the parallel tab, I use only the detached parallel dialog, so I've never noticed the problem. Question is, Why/how does opening the parallel tab lead to trying to update the parallel dialog? Maybe more importantly, why is this happening just now, with no user reports? Have recent updates induced the problem?Something has (recently?) chosen to take the route through the dialog code when it should not even think to do so.
The parallel dialog can be opened and re-opened repetitiously without incident.