After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 710493 - Gdk assertion failed: invalid cairo image surface format
Gdk assertion failed: invalid cairo image surface format
Status: RESOLVED FIXED
Product: rhythmbox
Classification: Other
Component: User Interface
3.0.x
Other Linux
: Normal normal
: ---
Assigned To: RhythmBox Maintainers
RhythmBox Maintainers
: 712324 (view as bug list)
Depends on:
Blocks:
 
 
Reported: 2013-10-19 04:34 UTC by Paul O'Neil
Modified: 2013-12-25 16:46 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
some debug output that might help; run with '-D image' (1.08 KB, patch)
2013-11-17 21:33 UTC, Jonathan Matthew
none Details | Review
try this? (1.21 KB, patch)
2013-11-17 23:26 UTC, Jonathan Matthew
committed Details | Review

Description Paul O'Neil 2013-10-19 04:34:16 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:

Comment 1 Jonathan Matthew 2013-10-22 23:00:28 UTC
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?
Comment 2 Paul O'Neil 2013-10-24 15:36:44 UTC
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?
Comment 3 Jonathan Matthew 2013-11-14 22:07:10 UTC
*** Bug 712324 has been marked as a duplicate of this bug. ***
Comment 4 Jean-François Fortin Tam 2013-11-14 22:12:00 UTC
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?
Comment 5 Jonathan Matthew 2013-11-15 01:26:41 UTC
Not seeing this on f20
Comment 6 Jean-François Fortin Tam 2013-11-15 01:43:45 UTC
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.
Comment 7 Jonathan Matthew 2013-11-15 02:00:03 UTC
This is happening when it's trying to render the fallback image, so in a sense, yes, but that's not really useful information.
Comment 8 Jean-François Fortin Tam 2013-11-15 02:10:17 UTC
Does this help?


(gdb) bt full
  • #0 raise
    from /lib64/libc.so.6
  • #1 abort
    from /lib64/libc.so.6
  • #2 _g_log_abort
    at gmessages.c line 255
  • #3 g_assertion_message
  • #4 g_assertion_message_expr
    at gtestutils.c line 2293
  • #5 gdk_cairo_surface_paint_pixbuf
    from /lib64/libgdk-3.so.0
  • #6 gdk_cairo_set_source_pixbuf
    from /lib64/libgdk-3.so.0
  • #7 prepare_image
    at rb-fading-image.c line 102
  • #8 render_current
    at rb-fading-image.c line 180
  • #9 composite_into_current
    at rb-fading-image.c line 652
  • #10 rb_fading_image_set_pixbuf
    at rb-fading-image.c line 685
  • #11 art_cb
    at rb-header.c line 461
  • #12 load_request_cb
    at rb-ext-db.c line 603
  • #13 g_simple_async_result_complete
    at gsimpleasyncresult.c line 777
  • #14 complete_in_idle_cb_for_thread
    at gsimpleasyncresult.c line 845
  • #15 g_main_dispatch
    at gmain.c line 3066
  • #16 g_main_context_dispatch
    at gmain.c line 3642
  • #17 g_main_context_iterate
    at gmain.c line 3713
  • #18 g_main_context_iteration
    at gmain.c line 3774
  • #19 g_application_run
    at gapplication.c line 1635
  • #20 rb_application_run
    at rb-application.c line 646
  • #21 main
    at main.c line 95

Comment 9 Jean-François Fortin Tam 2013-11-15 13:32:59 UTC
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...
Comment 10 Jonathan Matthew 2013-11-17 01:52:41 UTC
What happens if you move /usr/share/icons/hicolor/48x48/status/rhythmbox-missing-artwork.png somewhere else?
Comment 11 Jonathan Matthew 2013-11-17 11:31:16 UTC
Is anyone able to reproduce this with a version of rhythmbox they have built from source?
Comment 12 Jean-François Fortin Tam 2013-11-17 13:21:07 UTC
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.
Comment 13 Jonathan Matthew 2013-11-17 21:33:27 UTC
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.
Comment 14 Jean-François Fortin Tam 2013-11-17 22:56:28 UTC
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)
Comment 15 Jonathan Matthew 2013-11-17 23:26:33 UTC
Created attachment 260066 [details] [review]
try this?
Comment 16 Jean-François Fortin Tam 2013-11-18 17:03:22 UTC
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
Comment 17 Paul O'Neil 2013-11-18 18:17:05 UTC
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.
Comment 18 Jonathan Matthew 2013-11-27 07:47:24 UTC
that and a fix for the gdk_pixbuf_scale_simple thing pushed as commit 344545b; thanks for testing.