Bug#721453: [gir1.2-clutter-1.0] Clutter.Image.set_data() fails or crash for big images

Jerome Flesch jflesch at gmail.com
Sat Aug 31 18:12:13 UTC 2013


Package: gir1.2-clutter-1.0
Version: 1.14.4-3
Severity: important

--- Please enter the report below this line. ---

I'm currently working on a personnal projet ( 
https://github.com/jflesch/paperwork/#readme ) and I'm planning on using 
Clutter to make some animations. However, my program deals often with 
big images (about 2500x3500px each), and it seems there is currently a 
problem with the support of big images in Clutter in Debian testing and 
unstable.

Here are 2 test programs (one using GtkClutter and the other one using 
just Clutter):
- http://jflesch.kwain.net/~jflesch/clutter_crash/test_gtk.py
- http://jflesch.kwain.net/~jflesch/clutter_crash/test_nogtk.py
(you must specify the image to display as argument)
They are based on the documentation example (but without the interactive 
part):
https://developer.gnome.org/clutter/stable/ClutterImage.html#ClutterImage.description

And here are test data:
- http://jflesch.kwain.net/~jflesch/clutter_crash/paper.1.thumb.jpg 
(small image)
- http://jflesch.kwain.net/~jflesch/clutter_crash/paper.1.jpg (big image)

The results are as follow:
- Debian stable (gir1.2-clutter 1.10.8-2) + Nvidia : OK
- Debian stable (gir1.2-clutter 1.10.8-2) + Virtualbox : OK
- Debian testing (gir1.2-clutter 1.14.4-2) + Virtualbox: Works with the 
small image, but displays a black rectangle instead of the big image
- Debian unstable (gir1.2-clutter 1.14.4-3) + Virtualbox : Works with 
the small image, but displays a black rectangle instead of the big image
- Debian unstable (gir1.2-clutter 1.14.4-3) + Intel : Works with the 
small image, but segfaults with the big one. The segfault occur on the 
call to Clutter.Image.set_data()
- Fedora 19 (clutter 1.14.4) + Nvidia: OK
(tested only on amd64 arch)

Here is the stacktrace when it segfaults:
###
Program received signal SIGSEGV, Segmentation fault.
cogl_object_unref (obj=0x0) at ./cogl-object.c:103
103    ./cogl-object.c: Aucun fichier ou dossier de ce type.
(gdb) bt
#0  cogl_object_unref (obj=0x0) at ./cogl-object.c:103
#1  0x00007fffecc136b5 in _cogl_atlas_texture_free (atlas_tex=0x1f8b330) 
at ./cogl-atlas-texture.c:279
#2  _cogl_object_atlas_texture_indirect_free (obj=0x1f8b330) at 
./cogl-atlas-texture.c:53
#3  0x00007fffecc13d8d in _cogl_atlas_texture_new_from_bitmap 
(bmp=bmp at entry=0xd21880, flags=flags at entry=COGL_TEXTURE_NONE,
     internal_format=<optimized out>, 
internal_format at entry=COGL_PIXEL_FORMAT_ANY, 
error=error at entry=0x7fffffffd628) at ./cogl-atlas-texture.c:847
#4  0x00007fffecc0dccf in _cogl_texture_new_from_bitmap 
(bitmap=bitmap at entry=0xd21880, flags=flags at entry=COGL_TEXTURE_NONE,
     internal_format=internal_format at entry=COGL_PIXEL_FORMAT_ANY, 
error=error at entry=0x7fffffffd688) at ./cogl-auto-texture.c:176
#5  0x00007fffecc0de92 in _cogl_texture_new_from_data 
(error=0x7fffffffd688, data=0x7fffe5f98010 "", rowstride=<optimized out>,
     internal_format=COGL_PIXEL_FORMAT_ANY, 
format=COGL_PIXEL_FORMAT_RGB_888, flags=COGL_TEXTURE_NONE, height=3510, 
width=2487, ctx=0xf55d00)
     at ./cogl-auto-texture.c:131
#6  cogl_texture_new_from_data (width=width at entry=2487, 
height=height at entry=3510, flags=flags at entry=COGL_TEXTURE_NONE,
     format=format at entry=COGL_PIXEL_FORMAT_RGB_888, 
internal_format=internal_format at entry=COGL_PIXEL_FORMAT_ANY, 
rowstride=rowstride at entry=7464,
     data=data at entry=0x7fffe5f98010 "") at ./cogl-auto-texture.c:152
#7  0x00007fffed0d716a in clutter_image_set_data (image=0xa1d790, 
data=0x7fffe5f98010 "", pixel_format=COGL_PIXEL_FORMAT_RGB_888, width=2487,
     height=3510, row_stride=7464, error=0x7fffffffd960) at 
./clutter-image.c:238
#8  0x00007ffff5854e28 in ffi_call_unix64 () from 
/usr/lib/x86_64-linux-gnu/libffi.so.6
#9  0x00007ffff5854790 in ffi_call () from 
/usr/lib/x86_64-linux-gnu/libffi.so.6
#10 0x00007ffff691c704 in g_callable_info_invoke () from 
/usr/lib/libgirepository-1.0.so.1
#11 0x00007ffff691da6b in g_function_info_invoke () from 
/usr/lib/libgirepository-1.0.so.1
#12 0x00007ffff6b5933f in ?? () from 
/usr/lib/python2.7/dist-packages/gi/_gi.so
#13 0x0000000000475198 in ext_do_call (nk=<optimized out>, na=<optimized 
out>, flags=<optimized out>, pp_stack=0x7fffffffdce0,
     func=<built-in method invoke of gi.FunctionInfo object at remote 
0x1f27170>) at ../Python/ceval.c:4331
#14 PyEval_EvalFrameEx
(...)
(the remaining elements of the stacktrace are from the Python interpreter)
###


--- System information. ---
Architecture: amd64
Kernel: Linux 3.10-2-amd64

Debian Release: jessie/sid
500 unstable www.deb-multimedia.org
500 unstable ftp.debian.org
500 unstable debian.proxad.net
500 stable repository.spotify.com

--- Package information. ---
Depends (Version) | Installed
=====================================-+-=============
gir1.2-atk-1.0 | 2.8.0-2
gir1.2-cogl-1.0 | 1.14.0-3
gir1.2-coglpango-1.0 | 1.14.0-3
gir1.2-freedesktop | 1.36.0-2+b1
gir1.2-glib-2.0 | 1.36.0-2+b1
gir1.2-gtk-3.0 | 3.8.2-3
gir1.2-json-1.0 | 0.16.0-1
libclutter-1.0-0 (>= 1.13.10) | 1.14.4-3


Package's Recommends field is empty.

Package's Suggests field is empty.




More information about the pkg-gnome-maintainers mailing list