Control: clone -1 -2 Control: severity -2 normal Control: retitle -2 Assertion failure accessing pixel-bytes of default-constructed GdkPixbuf: data != NULL || size == 0 Control: forwarded -2 https://gitlab.gnome.org/GNOME/gdk-pixbuf/issues/91 Control: reassign -2 libgdk-pixbuf2.0-0 2.38.0+dfsg-4
I'm using #908439 for the gtk+3.0 FTBFS and the new clone for the gdk-pixbuf bug. On Mon, 10 Sep 2018 at 00:31:13 +0100, Simon McVittie wrote: > (/srv/tmp/smcv/build-area/gtk+3.0-3.24.0/debian/build/deb/testsuite/gtk/.libs/defaultvalue:8467): > GLib-CRITICAL **: 00:19:27.089: g_bytes_new: assertion 'data != NULL || size > == 0' failed #4 0x00007ffff6ce4450 in gdk_pixbuf_get_property (object=0x555555784b00, prop_id=9, value=0x7fffffffdad0, pspec=0x55555582ad40) at ../gdk-pixbuf/gdk-pixbuf.c:1345 Line 1345 is: case PROP_PIXEL_BYTES: g_value_set_boxed (value, gdk_pixbuf_read_pixel_bytes (pixbuf)); In the mode where the GdkPixbuf is backed by mutable pixels and not an immutable GBytes structure, this returns: return g_bytes_new (pixbuf->s.pixels.pixels, gdk_pixbuf_get_byte_length (pixbuf)); where gdk_pixbuf_get_byte_length() returns: return ((pixbuf->height - 1) * pixbuf->rowstride + pixbuf->width * ((pixbuf->n_channels * pixbuf->bits_per_sample + 7) / 8)); (gdb) p *(GdkPixbuf *)object $1 = {parent_instance = {g_type_instance = {Python Exception <class 'gdb.error'> No type named TypeNode.: g_class = }, ref_count = 2, qdata = 0x0}, colorspace = GDK_COLORSPACE_RGB, n_channels = 3, bits_per_sample = 8, width = 1, height = 1, rowstride = 1, storage = STORAGE_PIXELS, s = {pixels = {pixels = 0x0, destroy_fn = 0x0, destroy_fn_data = 0x0}, bytes = { bytes = 0x0}}, has_alpha = 0} So the calculation is that this 1x1 GdkPixbuf should have 3 bytes of data, namely the R,G,B values of its single pixel. You can reproduce this quicker in Python: >>> from gi.repository import GdkPixbuf >>> GdkPixbuf.Pixbuf().props.pixel_bytes __main__:1: Warning: g_bytes_new: assertion 'data != NULL || size == 0' failed Before 2.38 it would have returned NULL whenever not backed by a GBytes, even if there was a non-NULL pixel data blob (which also seems like a bug). I think this is really a gdk-pixbuf bug, but we can work around it by not testing the GdkPixbuf type in this way. smcv