Crashing when hovering over icons In Fedora 21

Bug #1406303 reported by Robert Roth
12
This bug affects 2 people
Affects Status Importance Assigned to Milestone
Files
Fix Released
Critical
Jeremy Wootten

Bug Description

I get constant crashes on Fedora 21 (pantheon-files is unusable at the moment) when hovering over any icon in the icon view.
The gdb stacktrace is (along with some fatal logs before crashing) :

[_LOG_LEVEL_FATAL 18:04:32.422139] [GdkPixbuf] gdk_pixbuf_get_n_channels: assertion 'GDK_IS_PIXBUF (pixbuf)' failed
[_LOG_LEVEL_FATAL 18:04:32.422182] Files will not function properly.
[_LOG_LEVEL_FATAL 18:04:32.422204] [GdkPixbuf] gdk_pixbuf_get_height: assertion 'GDK_IS_PIXBUF (pixbuf)' failed
[_LOG_LEVEL_FATAL 18:04:32.422224] Files will not function properly.
[_LOG_LEVEL_FATAL 18:04:32.422245] [GdkPixbuf] gdk_pixbuf_get_width: assertion 'GDK_IS_PIXBUF (pixbuf)' failed
[_LOG_LEVEL_FATAL 18:04:32.422261] Files will not function properly.
**
Gdk:ERROR:gdkcairo.c:193:gdk_cairo_surface_paint_pixbuf: assertion failed: (cairo_image_surface_get_format (surface) == CAIRO_FORMAT_RGB24 || cairo_image_surface_get_format (surface) == CAIRO_FORMAT_ARGB32)

(gdb) backtrace
#0 0x00007ffff39588c7 in raise () at /lib64/libc.so.6
#1 0x00007ffff395a52a in abort () at /lib64/libc.so.6
#2 0x00007ffff3d509b5 in g_assertion_message () at /lib64/libglib-2.0.so.0
#3 0x00007ffff3d50a4a in g_assertion_message_expr () at /lib64/libglib-2.0.so.0
#4 0x00007ffff5eb695c in gdk_cairo_surface_paint_pixbuf () at /lib64/libgdk-3.so.0
#5 0x00007ffff5eb712a in gdk_cairo_set_source_pixbuf () at /lib64/libgdk-3.so.0
#6 0x00000000004297d8 in marlin_icon_renderer_render ()
#7 0x00007ffff626cc3a in gtk_cell_renderer_render () at /lib64/libgtk-3.so.0
#8 0x00007ffff6263682 in render_cell () at /lib64/libgtk-3.so.0
#9 0x00007ffff62660ec in gtk_cell_area_box_foreach_alloc () at /lib64/libgtk-3.so.0
#10 0x00007ffff62631d9 in gtk_cell_area_real_render () at /lib64/libgtk-3.so.0
#11 0x00007ffff6311813 in gtk_icon_view_paint_item () at /lib64/libgtk-3.so.0
#12 0x00007ffff63167ca in gtk_icon_view_draw () at /lib64/libgtk-3.so.0
#13 0x00007ffff633c55d in _gtk_marshal_BOOLEAN__BOXED () at /lib64/libgtk-3.so.0
#14 0x00007ffff64697af in gtk_widget_draw_marshaller () at /lib64/libgtk-3.so.0
#15 0x00007ffff428ec8f in g_closure_invoke () at /lib64/libgobject-2.0.so.0
#16 0x00007ffff42a093a in signal_emit_unlocked_R () at /lib64/libgobject-2.0.so.0
#17 0x00007ffff42a8d58 in g_signal_emit_valist () at /lib64/libgobject-2.0.so.0
#18 0x00007ffff42a93af in g_signal_emit () at /lib64/libgobject-2.0.so.0
#19 0x00007ffff6477c36 in _gtk_widget_draw_internal.part.102 () at /lib64/libgtk-3.so.0
#20 0x00007ffff64792af in _gtk_widget_draw_windows () at /lib64/libgtk-3.so.0
#21 0x00007ffff6479335 in _gtk_widget_draw_windows () at /lib64/libgtk-3.so.0
#22 0x00007ffff647952f in _gtk_widget_draw () at /lib64/libgtk-3.so.0
#23 0x00007ffff6290fb5 in gtk_container_propagate_draw () at /lib64/libgtk-3.so.0
#24 0x00007ffff6291082 in gtk_container_draw () at /lib64/libgtk-3.so.0
#25 0x00007ffff63b52a0 in gtk_scrolled_window_draw () at /lib64/libgtk-3.so.0
#26 0x00007ffff633c65e in _gtk_marshal_BOOLEAN__BOXEDv () at /lib64/libgtk-3.so.0
#27 0x00007ffff6469710 in gtk_widget_draw_marshallerv () at /lib64/libgtk-3.so.0
#28 0x00007ffff428eeb2 in _g_closure_invoke_va () at /lib64/libgobject-2.0.so.0
#29 0x00007ffff42a862b in g_signal_emit_valist () at /lib64/libgobject-2.0.so.0
#30 0x00007ffff42a93af in g_signal_emit () at /lib64/libgobject-2.0.so.0
#31 0x00007ffff6477c36 in _gtk_widget_draw_internal.part.102 () at /lib64/libgtk-3.so.0
#32 0x00007ffff6479683 in _gtk_widget_draw () at /lib64/libgtk-3.so.0
#33 0x00007ffff6290fb5 in gtk_container_propagate_draw () at /lib64/libgtk-3.so.0
#34 0x00007ffff6291082 in gtk_container_draw () at /lib64/libgtk-3.so.0
#35 0x00007ffff624b762 in gtk_box_draw () at /lib64/libgtk-3.so.0
#36 0x00007ffff633c65e in _gtk_marshal_BOOLEAN__BOXEDv () at /lib64/libgtk-3.so.0
#37 0x00007ffff6469710 in gtk_widget_draw_marshallerv () at /lib64/libgtk-3.so.0
#38 0x00007ffff428eeb2 in _g_closure_invoke_va () at /lib64/libgobject-2.0.so.0
#39 0x00007ffff42a862b in g_signal_emit_valist () at /lib64/libgobject-2.0.so.0
#40 0x00007ffff42a93af in g_signal_emit () at /lib64/libgobject-2.0.so.0
#41 0x00007ffff6477c36 in _gtk_widget_draw_internal.part.102 () at /lib64/libgtk-3.so.0
#42 0x00007ffff6479683 in _gtk_widget_draw () at /lib64/libgtk-3.so.0
#43 0x00007ffff6290fb5 in gtk_container_propagate_draw () at /lib64/libgtk-3.so.0
#44 0x00007ffff6291082 in gtk_container_draw () at /lib64/libgtk-3.so.0
#45 0x00007ffff633c65e in _gtk_marshal_BOOLEAN__BOXEDv () at /lib64/libgtk-3.so.0
#46 0x00007ffff6469710 in gtk_widget_draw_marshallerv () at /lib64/libgtk-3.so.0
#47 0x00007ffff428eeb2 in _g_closure_invoke_va () at /lib64/libgobject-2.0.so.0
#48 0x00007ffff42a862b in g_signal_emit_valist () at /lib64/libgobject-2.0.so.0
#49 0x00007ffff42a93af in g_signal_emit () at /lib64/libgobject-2.0.so.0
#50 0x00007ffff6477c36 in _gtk_widget_draw_internal.part.102 () at /lib64/libgtk-3.so.0
#51 0x00007ffff6479683 in _gtk_widget_draw () at /lib64/libgtk-3.so.0
#52 0x00007ffff6290fb5 in gtk_container_propagate_draw () at /lib64/libgtk-3.so.0
#53 0x00007ffff6291082 in gtk_container_draw () at /lib64/libgtk-3.so.0
#54 0x00007ffff62cd2ec in gtk_event_box_draw () at /lib64/libgtk-3.so.0
#55 0x00007ffff633c65e in _gtk_marshal_BOOLEAN__BOXEDv () at /lib64/libgtk-3.so.0
#56 0x00007ffff6469710 in gtk_widget_draw_marshallerv () at /lib64/libgtk-3.so.0
#57 0x00007ffff428eeb2 in _g_closure_invoke_va () at /lib64/libgobject-2.0.so.0
#58 0x00007ffff42a862b in g_signal_emit_valist () at /lib64/libgobject-2.0.so.0
#59 0x00007ffff42a93af in g_signal_emit () at /lib64/libgobject-2.0.so.0
#60 0x00007ffff6477c36 in _gtk_widget_draw_internal.part.102 () at /lib64/libgtk-3.so.0
#61 0x00007ffff64792af in _gtk_widget_draw_windows () at /lib64/libgtk-3.so.0
#62 0x00007ffff647952f in _gtk_widget_draw () at /lib64/libgtk-3.so.0
#63 0x00007ffff6290fb5 in gtk_container_propagate_draw () at /lib64/libgtk-3.so.0
#64 0x00007ffff636b0be in gtk_notebook_draw () at /lib64/libgtk-3.so.0
#65 0x00007ffff633c65e in _gtk_marshal_BOOLEAN__BOXEDv () at /lib64/libgtk-3.so.0
#66 0x00007ffff6469710 in gtk_widget_draw_marshallerv () at /lib64/libgtk-3.so.0
#67 0x00007ffff428eeb2 in _g_closure_invoke_va () at /lib64/libgobject-2.0.so.0
#68 0x00007ffff42a862b in g_signal_emit_valist () at /lib64/libgobject-2.0.so.0
#69 0x00007ffff42a93af in g_signal_emit () at /lib64/libgobject-2.0.so.0
#70 0x00007ffff6477c36 in _gtk_widget_draw_internal.part.102 () at /lib64/libgtk-3.so.0
#71 0x00007ffff6479683 in _gtk_widget_draw () at /lib64/libgtk-3.so.0
#72 0x00007ffff6290fb5 in gtk_container_propagate_draw () at /lib64/libgtk-3.so.0
#73 0x00007ffff6291082 in gtk_container_draw () at /lib64/libgtk-3.so.0
#74 0x00007ffff62cd2ec in gtk_event_box_draw () at /lib64/libgtk-3.so.0
#75 0x00007ffff633c55d in _gtk_marshal_BOOLEAN__BOXED () at /lib64/libgtk-3.so.0
#76 0x00007ffff64697af in gtk_widget_draw_marshaller () at /lib64/libgtk-3.so.0
#77 0x00007ffff428ec8f in g_closure_invoke () at /lib64/libgobject-2.0.so.0
#78 0x00007ffff42a093a in signal_emit_unlocked_R () at /lib64/libgobject-2.0.so.0
#79 0x00007ffff42a8d58 in g_signal_emit_valist () at /lib64/libgobject-2.0.so.0
#80 0x00007ffff42a93af in g_signal_emit () at /lib64/libgobject-2.0.so.0
#81 0x00007ffff6477c36 in _gtk_widget_draw_internal.part.102 () at /lib64/libgtk-3.so.0
#82 0x00007ffff6479683 in _gtk_widget_draw () at /lib64/libgtk-3.so.0
#83 0x00007ffff6290fb5 in gtk_container_propagate_draw () at /lib64/libgtk-3.so.0
#84 0x00007ffff6291082 in gtk_container_draw () at /lib64/libgtk-3.so.0
#85 0x00007ffff6377483 in gtk_paned_draw () at /lib64/libgtk-3.so.0
#86 0x00007ffff74316c8 in granite_widgets_thin_paned_real_draw () at /lib64/libgranite.so.2
#87 0x00007ffff633c65e in _gtk_marshal_BOOLEAN__BOXEDv () at /lib64/libgtk-3.so.0
#88 0x00007ffff6469710 in gtk_widget_draw_marshallerv () at /lib64/libgtk-3.so.0
#89 0x00007ffff428eeb2 in _g_closure_invoke_va () at /lib64/libgobject-2.0.so.0
#90 0x00007ffff42a862b in g_signal_emit_valist () at /lib64/libgobject-2.0.so.0
#91 0x00007ffff42a93af in g_signal_emit () at /lib64/libgobject-2.0.so.0
#92 0x00007ffff6477c36 in _gtk_widget_draw_internal.part.102 () at /lib64/libgtk-3.so.0
#93 0x00007ffff64792af in _gtk_widget_draw_windows () at /lib64/libgtk-3.so.0
#94 0x00007ffff6479632 in _gtk_widget_draw () at /lib64/libgtk-3.so.0
#95 0x00007ffff6290fb5 in gtk_container_propagate_draw () at /lib64/libgtk-3.so.0
#96 0x00007ffff6291082 in gtk_container_draw () at /lib64/libgtk-3.so.0
#97 0x00007ffff624b762 in gtk_box_draw () at /lib64/libgtk-3.so.0
#98 0x00007ffff633c65e in _gtk_marshal_BOOLEAN__BOXEDv () at /lib64/libgtk-3.so.0
#99 0x00007ffff6469710 in gtk_widget_draw_marshallerv () at /lib64/libgtk-3.so.0
#100 0x00007ffff428eeb2 in _g_closure_invoke_va () at /lib64/libgobject-2.0.so.0
#101 0x00007ffff42a862b in g_signal_emit_valist () at /lib64/libgobject-2.0.so.0
#102 0x00007ffff42a93af in g_signal_emit () at /lib64/libgobject-2.0.so.0
#103 0x00007ffff6477c36 in _gtk_widget_draw_internal.part.102 () at /lib64/libgtk-3.so.0
#104 0x00007ffff6479683 in _gtk_widget_draw () at /lib64/libgtk-3.so.0
#105 0x00007ffff6290fb5 in gtk_container_propagate_draw () at /lib64/libgtk-3.so.0
#106 0x00007ffff6291082 in gtk_container_draw () at /lib64/libgtk-3.so.0
#107 0x00007ffff64824bd in gtk_window_draw () at /lib64/libgtk-3.so.0
#108 0x00007ffff633c65e in _gtk_marshal_BOOLEAN__BOXEDv () at /lib64/libgtk-3.so.0
#109 0x00007ffff6469710 in gtk_widget_draw_marshallerv () at /lib64/libgtk-3.so.0
#110 0x00007ffff428ef64 in _g_closure_invoke_va () at /lib64/libgobject-2.0.so.0
#111 0x00007ffff42a862b in g_signal_emit_valist () at /lib64/libgobject-2.0.so.0
#112 0x00007ffff42a93af in g_signal_emit () at /lib64/libgobject-2.0.so.0
#113 0x00007ffff6477c36 in _gtk_widget_draw_internal.part.102 () at /lib64/libgtk-3.so.0
#114 0x00007ffff64792af in _gtk_widget_draw_windows () at /lib64/libgtk-3.so.0
#115 0x00007ffff647952f in _gtk_widget_draw () at /lib64/libgtk-3.so.0
#116 0x00007ffff647986b in gtk_widget_send_expose () at /lib64/libgtk-3.so.0
#117 0x00007ffff633b7d0 in gtk_main_do_event () at /lib64/libgtk-3.so.0
#118 0x00007ffff5ec943f in _gdk_window_process_updates_recurse_helper () at /lib64/libgdk-3.so.0
#119 0x00007ffff5ec9ccc in gdk_window_process_updates_internal () at /lib64/libgdk-3.so.0
#120 0x00007ffff5ec9de3 in gdk_window_process_updates_with_mode () at /lib64/libgdk-3.so.0
#121 0x00007ffff428ef64 in _g_closure_invoke_va () at /lib64/libgobject-2.0.so.0
#122 0x00007ffff42a8b60 in g_signal_emit_valist () at /lib64/libgobject-2.0.so.0
#123 0x00007ffff42a98fa in g_signal_emit_by_name () at /lib64/libgobject-2.0.so.0
#124 0x00007ffff5ec39ea in gdk_frame_clock_paint_idle () at /lib64/libgdk-3.so.0
#125 0x00007ffff5eb5e78 in gdk_threads_dispatch () at /lib64/libgdk-3.so.0
#126 0x00007ffff3d2b553 in g_timeout_dispatch () at /lib64/libglib-2.0.so.0
#127 0x00007ffff3d2aaeb in g_main_context_dispatch () at /lib64/libglib-2.0.so.0
#128 0x00007ffff3d2ae88 in g_main_context_iterate.isra () at /lib64/libglib-2.0.so.0
#129 0x00007ffff3d2af3c in g_main_context_iteration () at /lib64/libglib-2.0.so.0
#130 0x00007ffff6ebf0cc in g_application_run () at /lib64/libgio-2.0.so.0
#131 0x00007ffff73b5c63 in granite_application_run () at /lib64/libgranite.so.2
#132 0x0000000000436360 in _vala_main ()
#133 0x00007ffff3943fe0 in __libc_start_main () at /lib64/libc.so.6
#134 0x0000000000426475 in _start ()

Related branches

Robert Roth (evfool)
Changed in pantheon-files:
importance: Undecided → Critical
Revision history for this message
Robert Roth (evfool) wrote :

Environment info:
valac 0.26.1
gtk 3.14.6
gdk-pixbuf 2.31.1

Revision history for this message
Jeremy Wootten (jeremywootten) wrote :

If it only occurs in Icon view and only when hovering, then it may be something to do with rendering the selection-helpers. With the later versions of trunk you can suppress selection helper display be making the icons very small (zoom with Ctrl-minus or Ctrl-Scroll). If this stops the crashing, it looks like either the selection icons are not being found or are in the wrong format and the code has no safeguards for this.

Please confirm whether the crash
1) Only occurs in Icon View
2) Only occurs on hovering
3) Only occurs when selection helpers are showing

Changed in pantheon-files:
status: New → Incomplete
summary: - Crashing when hovering over icons
+ Crashing when hovering over icons In Fedora 21
Revision history for this message
Robert Roth (evfool) wrote :

Crash happens
1) in all views (list, icon and miller view)
2) the crash happens only when hovering over a file/folder icon (maybe the selection helpers, but based on the warnings before crashing it might also be related to the hover prelight stuff from eel-pixbuf-extensions.c:create_new_pixbuf, that's the only place where gdk_pixbuf_get_n_channels is called)
3) I don't get to the selection helpers appearing, files crashes before that happens, so I can't confirm this.

Revision history for this message
Robert Roth (evfool) wrote :

Zoom in/out with Ctrl + or - doesn't work, but another reason I suspect the icon pixbuf prelight rendering: when focusing the icon view with the keyboard (tabbing until the icon view gets focus) the selected folder appears as black. Attaching a screenshot showing the black icon.

Revision history for this message
Jeremy Wootten (jeremywootten) wrote :

Thanks Robert. I think you are right, if it is happening in all views whether or not the selection-helpers would have been displayed makes the prelight code a better suspect. Elementary is on libgdk 2.30.7-0ubuntu1 at the moment.

Changed in pantheon-files:
status: Incomplete → Confirmed
Revision history for this message
Robert Roth (evfool) wrote :

It turned out that the selection helpers are the culprit indeed, namely because Adwaita doesn't have any icons named "add" and "remove", like elementary icon theme had. As this can easily happen with people using similar themes not having icons named like these, this still should be fixed.

Revision history for this message
Jeremy Wootten (jeremywootten) wrote :

OK, thanks. I see there has been some discussion about this elsewhere and the consensus is that it would be better to fix the fall-back behaviour of marlin_icon_info_lookup_from_name rather than use Gtk.Image.from_icon_name ?

Revision history for this message
Robert Roth (evfool) wrote :

Yes, there was an internal discussion, summarizing:
* danrabbit also suggested nuking marlin_icon_info_lookup_from_name and using Gtk.Image.from_icon_name instead everywhere in marlin
* I have suggested using marlin_icon_info_lookup_from_name, and fixing it to avoid crashing in case of inexistent icons, as that's used in more places, which doesn't seem like a strong argument checking that it is called from 6 different places in trunk, 2 of those being the selection helpers, so replacing all occurrences wouldn't be that hard. I checked and it seems to have historical roots, dating back to nautilus times, as nautilus has nautilus_icon_info_lookup_from_name, which implements an additional level of icon cache for the icon views.
* as nautilus uses a similar/the same caching method, I have volunteered to ask around why it's there, and if it could be upstreamed in some way, before completely removing it from our code.

Changed in pantheon-files:
status: Confirmed → In Progress
assignee: nobody → Jeremy Wootten (jeremywootten)
Revision history for this message
SuperScript (superscript18) wrote :

I get this crash on elementary OS when using the Numix-Circle icon theme.

Revision history for this message
Jeremy Wootten (jeremywootten) wrote :

A recent update should have fixed this, except that now the selection-helpers only appear if you are using the elementary icon theme. A further update provided fallback icons will be pushed in due course.

Changed in pantheon-files:
status: In Progress → Fix Committed
Changed in pantheon-files:
milestone: none → freya-rc1
Cody Garver (codygarver)
Changed in pantheon-files:
milestone: freya-rc1 → 0.2
Cody Garver (codygarver)
Changed in pantheon-files:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.