Open Zachs-Kappler opened 6 years ago
I think I might have seen something similar when testing one of my PRs. https://github.com/needle-and-thread/vocal/pull/276#issuecomment-379514993 . It seems to happen when vocal is creating episodeDetailBoxes in the new episode view.
./com.github.needle-and-thread.vocal(vocal_episode_detail_box_construct+0xbe5)[0x4402d9]
./com.github.needle-and-thread.vocal(vocal_episode_detail_box_new+0x43)[0x4416b4]
./com.github.needle-and-thread.vocal(vocal_new_episodes_view_populate_episodes_list+0x49b)[0x4519ad]
./com.github.needle-and-thread.vocal(vocal_main_window_populate_views+0x1a30)[0x421efb]
Certainly for the first trace
Can these error be easily reproduced with the current version?
Nevermind, I've been able to reproduce a couple of different errors when adding/removing podcasts. I'll create new issues once I'm able to narrow down the causes.
I'm getting some frequent errors/crashes when adding and/or removing podcasts, but they don't really seem to match the logs list above. The errors I'm getting appear to be *gtk_css* related. Not sure if I should open new issue or post backtrace here.
One example while removing a podcast:
Gtk:ERROR:/build/gtk+3.0-2Ut_nl/gtk+3.0-3.18.9/./gtk/gtkcssinheritvalue.c:33:gtk_css_value_inherit_free: code should not be reached
(gdb) bt 10
#0 0x00007ffff3a6e428 in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:54
#1 0x00007ffff3a7002a in __GI_abort () at abort.c:89
#2 0x00007ffff431cd65 in g_assertion_message () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#3 0x00007ffff431cdfa in g_assertion_message_expr () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#4 0x00007ffff544e636 in gtk_css_value_inherit_free (value=<optimized out>) at /build/gtk+3.0-2Ut_nl/gtk+3.0-3.18.9/./gtk/gtkcssinheritvalue.c:33
#5 0x00007ffff544fb1c in _gtk_css_lookup_resolve (lookup=lookup@entry=0x25aa310, provider=provider@entry=0x7a40d0, style=style@entry=0x2aa2d30,
parent_style=parent_style@entry=0x9829c0) at /build/gtk+3.0-2Ut_nl/gtk+3.0-3.18.9/./gtk/gtkcsslookup.c:125
#6 0x00007ffff5462309 in gtk_css_static_style_new_compute (provider=0x7a40d0, matcher=matcher@entry=0x7fffffffc890, parent=parent@entry=0x9829c0)
at /build/gtk+3.0-2Ut_nl/gtk+3.0-3.18.9/./gtk/gtkcssstaticstyle.c:191
#7 0x00007ffff5451ebd in gtk_css_node_create_style (cssnode=0x7fffbc331240) at /build/gtk+3.0-2Ut_nl/gtk+3.0-3.18.9/./gtk/gtkcssnode.c:330
#8 gtk_css_node_real_update_style (cssnode=0x7fffbc331240, change=10745806976, timestamp=6925972785, style=0x2bd5470)
at /build/gtk+3.0-2Ut_nl/gtk+3.0-3.18.9/./gtk/gtkcssnode.c:384
#9 0x00007ffff5450f62 in gtk_css_node_ensure_style (cssnode=cssnode@entry=0x7fffbc331240, current_time=6925972785)
at /build/gtk+3.0-2Ut_nl/gtk+3.0-3.18.9/./gtk/gtkcssnode.c:923
(More stack frames follow...)
(gdb) bt -10
#45 0x00007ffff45e908f in g_signal_emit () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#46 0x00007ffff5635c3c in gtk_widget_event_internal (widget=0xd8a460, event=0x25fc020) at /build/gtk+3.0-2Ut_nl/gtk+3.0-3.18.9/./gtk/gtkwidget.c:7692
#47 0x00007ffff54f7176 in gtk_main_do_event (event=0x25fc020) at /build/gtk+3.0-2Ut_nl/gtk+3.0-3.18.9/./gtk/gtkmain.c:1795
#48 0x00007ffff5e96d92 in gdk_event_source_dispatch (source=<optimized out>, callback=<optimized out>, user_data=<optimized out>)
at /build/gtk+3.0-2Ut_nl/gtk+3.0-3.18.9/./gdk/x11/gdkeventsource.c:369
#49 0x00007ffff42f7197 in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#50 0x00007ffff42f73f0 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#51 0x00007ffff42f749c in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#52 0x00007ffff74c2d6d in g_application_run () from /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0
#53 0x0000000000415d2b in vocal_vocal_app_main (args=0x7fffffffdd58, args_length1=1) at /Source/master-vocal/src/Vocal.vala:138
#54 0x0000000000415dc7 in main (argc=1, argv=0x7fffffffdd58) at /Source/master-vocal/src/Vocal.vala:92
(gdb)
I think this issue and #311 are being cause by populate_views_async
. Replacing it with populate_views
seems to resolve the issue (It hasn't happened after subscribing and unsubscribing from a number of podcasts). The problem then becomes that vocal is not async.
I'm not sure why using an async
would cause this.
I also see it crashing right after the Adding coverart to view.
message with additional FATAL
messages before finally dying. This happens repeatedly, even without interaction with the app and during listening to a podcast.
[INFO 09:35:14.198855] MainWindow.vala:636: Adding coverart to view.
[FATAL 09:35:14.203204] [Gtk] gtk_widget_set_no_show_all: assertion 'GTK_IS_WIDGET (widget)' failed
[FATAL 09:35:14.203238] [Gtk] gtk_widget_hide: assertion 'GTK_IS_WIDGET (widget)' failed
[FATAL 09:35:14.203793] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.204477] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.204494] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.205025] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.205279] [Gtk] gtk_widget_set_no_show_all: assertion 'GTK_IS_WIDGET (widget)' failed
[FATAL 09:35:14.205295] [Gtk] gtk_widget_hide: assertion 'GTK_IS_WIDGET (widget)' failed
[FATAL 09:35:14.205635] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.205654] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.205952] [Gtk] gtk_widget_set_no_show_all: assertion 'GTK_IS_WIDGET (widget)' failed
[FATAL 09:35:14.205967] [Gtk] gtk_widget_hide: assertion 'GTK_IS_WIDGET (widget)' failed
[FATAL 09:35:14.206350] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.206368] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.206397] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.206673] [Gtk] gtk_widget_set_no_show_all: assertion 'GTK_IS_WIDGET (widget)' failed
[FATAL 09:35:14.206691] [Gtk] gtk_widget_hide: assertion 'GTK_IS_WIDGET (widget)' failed
[FATAL 09:35:14.207029] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.207046] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.207339] [Gtk] gtk_widget_set_no_show_all: assertion 'GTK_IS_WIDGET (widget)' failed
[FATAL 09:35:14.207357] [Gtk] gtk_widget_hide: assertion 'GTK_IS_WIDGET (widget)' failed
[FATAL 09:35:14.207744] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.207763] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.207781] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.208324] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.208343] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.208361] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.208972] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.208993] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.209012] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.209406] [Gtk] gtk_widget_set_no_show_all: assertion 'GTK_IS_WIDGET (widget)' failed
[FATAL 09:35:14.209428] [Gtk] gtk_widget_hide: assertion 'GTK_IS_WIDGET (widget)' failed
[FATAL 09:35:14.209922] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.209940] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.209955] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.209969] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.210241] [Gtk] gtk_widget_set_no_show_all: assertion 'GTK_IS_WIDGET (widget)' failed
[FATAL 09:35:14.210259] [Gtk] gtk_widget_hide: assertion 'GTK_IS_WIDGET (widget)' failed
[FATAL 09:35:14.210653] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.210671] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.210926] [Gtk] gtk_widget_set_no_show_all: assertion 'GTK_IS_WIDGET (widget)' failed
[FATAL 09:35:14.210944] [Gtk] gtk_widget_hide: assertion 'GTK_IS_WIDGET (widget)' failed
[FATAL 09:35:14.211307] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.211324] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.211339] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.211589] [Gtk] gtk_widget_set_no_show_all: assertion 'GTK_IS_WIDGET (widget)' failed
[FATAL 09:35:14.211608] [Gtk] gtk_widget_hide: assertion 'GTK_IS_WIDGET (widget)' failed
[FATAL 09:35:14.211988] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.212007] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.212021] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.212035] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.212570] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.212588] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.212603] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.212617] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.212866] [Gtk] gtk_widget_set_no_show_all: assertion 'GTK_IS_WIDGET (widget)' failed
[FATAL 09:35:14.212883] [Gtk] gtk_widget_hide: assertion 'GTK_IS_WIDGET (widget)' failed
[FATAL 09:35:14.213278] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.213296] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.213309] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.213323] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.214026] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.214045] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.214059] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.214073] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.214085] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.214713] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.214733] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.215351] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.215378] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.215396] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.215813] [Gtk] gtk_widget_set_no_show_all: assertion 'GTK_IS_WIDGET (widget)' failed
[FATAL 09:35:14.215837] [Gtk] gtk_widget_hide: assertion 'GTK_IS_WIDGET (widget)' failed
[FATAL 09:35:14.216336] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.216360] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.216388] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.216772] [Gtk] gtk_widget_set_no_show_all: assertion 'GTK_IS_WIDGET (widget)' failed
[FATAL 09:35:14.216796] [Gtk] gtk_widget_hide: assertion 'GTK_IS_WIDGET (widget)' failed
[FATAL 09:35:14.217274] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.217298] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.217317] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.217721] [Gtk] gtk_widget_set_no_show_all: assertion 'GTK_IS_WIDGET (widget)' failed
[FATAL 09:35:14.217745] [Gtk] gtk_widget_hide: assertion 'GTK_IS_WIDGET (widget)' failed
[FATAL 09:35:14.218240] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.218263] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.218282] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.218301] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.219142] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.219166] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.219184] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.220057] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.220084] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.220103] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.220121] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.221024] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.221051] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.221071] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.221089] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.221846] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.221872] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.221890] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.221912] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.221933] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.222647] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.222670] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.222687] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.222705] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.222721] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.222740] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.223722] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.223747] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.223766] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
[FATAL 09:35:14.223785] [GLib] g_date_time_difference: assertion 'begin != NULL' failed
fish: “com.github.needle-and-thread.vo…” terminated by signal SIGSEGV (Address boundary error)
Unfortunately, I think many/most of those error messages are misleading. I've submitted a pull request to address the g_date_time_difference
error, but I don't think that it's causing the crash.
I think, like xpaulnim pointed out is that the problem originates in the populate_views_async
method. What I think is happening is that an already displayed UI element(s) are being updated from the background thread, which should not be done.
I was seeing crashes pretty regularly during background podcast updates and made a change (pull request #325 ) which defers updating the new-podcast UI to the main thread which significantly reduced the number of crashes I am now seeing (though I suspect this issue still exists in other areas/updates).
It's also be interesting to know which podcast caused the date errors, since the date parsing routine could probably be improved a bit ...
Well, I thought the error with adding and removing podcasts was fixed, but it still crashes. It gets weirder, as the actions are being performed and are reflected in Vocal after reopening it. I'll include the terminal output of both actions, but this is way better than nothing happening at all. I considered omitting the lines before the errors occurred, but maybe they might help.
elementary OS 0.4.1 Loki Vocal 2.2.0 from the AppCenter
Adding a Podcast:
Removing a Podcast: