GNOME Bugzilla – Bug 710493
Gdk assertion failed: invalid cairo image surface format
Last modified: 2013-12-25 16:46:04 UTC
The full text of the assertion printout is: 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) I open Rhythmbox and begin playing any track in my library. The crash happens almost immediately. It occurs when clicking the play button, double clicking any track, or selecting the track and pressent "return." The elapsed & total time appear next to the progress bar on the right, but the elapsed time is 0:00 when the crash happens. The assertion fails in Thread 1. I've lifted that portion of the stack trace here:
+ Trace 232642
It looks like the missing artwork icon is being loaded in some unusual format. What distribution are you using, and when did this start happening?
I'm using Arch Linux. It happened very close to when I upgraded to 3.0.0 ( I don't recall if it happened at exactly that time.) I waited to see if it got fixed in 3.0.1. Is there a list of images I should make sure I have?
*** Bug 712324 has been marked as a duplicate of this bug. ***
I did not experience this when I had my own build of RB 3.x on Fedora 19 with GTK 3.8, so I'm suspecting this could be something related to the GTK 3.10 stack?
Not seeing this on f20
If that changes anything, the view setting for "Display cover art" is set to off, and the Cover art query plugin is disabled. I'm now suspecting that the actual cause for the crash is whether or not there is a cover.jpg/cover.png file in the album folder; orphan tracks without local cover art don't seem to cause the crash here.
This is happening when it's trying to render the fallback image, so in a sense, yes, but that's not really useful information.
Does this help? (gdb) bt full
+ Trace 232775
And nevermind what I said about cover.png/cover.jpg being present, also happens with an album I have that has only audio files in its folder...
What happens if you move /usr/share/icons/hicolor/48x48/status/rhythmbox-missing-artwork.png somewhere else?
Is anyone able to reproduce this with a version of rhythmbox they have built from source?
The bug still occurs if you rename that image file. To compare with the F20-provided version, I compiled the 3.0.1 tarball and it exhibits the same issue.
Created attachment 260057 [details] [review] some debug output that might help; run with '-D image' This won't fix anything, but it should help me understand what's going wrong.
jeff@kusanagi:~$ rhythmbox -D image (rhythmbox:24359): GLib-GObject-CRITICAL **: Custom constructor for class SoupServer returned NULL (which is invalid). Unable to remove object from construction_objects list, so memory was probably just leaked. Please use GInitable instead. (rhythmbox:24359): GLib-GObject-CRITICAL **: Custom constructor for class SoupServer returned NULL (which is invalid). Unable to remove object from construction_objects list, so memory was probably just leaked. Please use GInitable instead. (rhythmbox:24359): GLib-GObject-CRITICAL **: Custom constructor for class SoupServer returned NULL (which is invalid). Unable to remove object from construction_objects list, so memory was probably just leaked. Please use GInitable instead. (rhythmbox:24359): GdkPixbuf-CRITICAL **: gdk_pixbuf_scale_simple: assertion 'dest_width > 0' failed (17:55:31) [0x1c7eb80] [prepare_image] rb-fading-image.c:111: target = image:1000:0x0x-1; pixbuf = 48x48x4 ** 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) Abandon (core dumped)
Created attachment 260066 [details] [review] try this?
Your patch fixes the issue on my end, though it should note that I have the following printing up in the terminal: (rhythmbox:11531): GdkPixbuf-CRITICAL **: gdk_pixbuf_scale_simple: assertion 'dest_width > 0' failed
The patch appears to fix the problem for me as well. I don't have the dest_width assertion, but I do have (lt-rhythmbox:18888): Gtk-WARNING **: mnemonic "s" wasn't removed for widget (0x294bd40) This is probably unrelated though.
that and a fix for the gdk_pixbuf_scale_simple thing pushed as commit 344545b; thanks for testing.