GNOME Bugzilla – Bug 343661
Jpeg image crashes gstreamer
Last modified: 2006-06-09 17:13:42 UTC
Steps to reproduce: $ gst-launch -v playbin uri='http://robots.org.uk/stuff/bug.jpg' Setting pipeline to PAUSED ... /playbin0/decoder.sink: caps = NULL Pipeline is PREROLLING ... /playbin0/decoder/typefind.src: caps = image/jpeg /playbin0/decoder.src0: caps = NULL /playbin0/selector_video_src0: active-pad = "sink0" /playbin0/vbin.sink: caps = NULL /playbin0/decoder/jpegdec0.sink: caps = image/jpeg /playbin0/preroll_video_src0: min-threshold-time = 2000000000 /playbin0/decoder/jpegdec0.src: caps = video/x-raw-yuv, format=(fourcc)I420, width=(int)2850, height=(int)1425, framerate=(fraction)0/1 /playbin0/vbin/id.sink: caps = video/x-raw-yuv, format=(fourcc)I420, width=(int)2850, height=(int)1425, framerate=(fraction)0/1 /playbin0/vbin/id.src: caps = video/x-raw-yuv, format=(fourcc)I420, width=(int)2850, height=(int)1425, framerate=(fraction)0/1 /playbin0/preroll_video_src0.src: caps = video/x-raw-yuv, format=(fourcc)I420, width=(int)2850, height=(int)1425, framerate=(fraction)0/1 Segmentation fault Stack trace: Can't seem to get one. $ gdb gst-launch (no debugging symbols found) Using host libthread_db library "/usr/lib/debug/libthread_db.so.1". (gdb) set args -v playbin uri=file:///home/sam/Documents/robots.org.uk/site/bug.jpg (gdb) handle SIG32 nostop print pass Signal Stop Print Pass to program Description SIG32 No Yes Yes Real-time event 32 (gdb) run Starting program: /usr/bin/gst-launch -v playbin uri=file:///home/sam/Documents/robots.org.uk/site/bug.jpg (no debugging symbols found) Setting pipeline to PAUSED ... /playbin0/decoder.sink: caps = NULL ERROR: Pipeline doesn't want to pause. ERROR: from element /playbin0/source: Resource not found. Additional debug info: gstgnomevfssrc.c(835): gst_gnome_vfs_src_start (): /playbin0/source: Could not open vfs file "file:///home/sam/Documents/robots.org.uk/site/bug.jpg" for reading: File not found Setting pipeline to NULL ... FREEING pipeline ... Program received signal SIG32, Real-time event 32. Program received signal SIG32, Real-time event 32. Program received signal SIG32, Real-time event 32. Program received signal SIG32, Real-time event 32. Program received signal SIG32, Real-time event 32. Program exited with code 0377. Other information:
Created attachment 66824 [details] Debug output Output of GST_DEBUG=4 gst-launch -v playbin uri='http://robots.org.uk/stuff/bug.jpg'
a 4:4:4 jpeg image. Our sampling calculations are wrong and so we allow jpeglib to write to invalid memory.
Problem was that the buffers were not allocated big enough to hold this big an image. Fixed in cvs now with this commit: * ext/jpeg/gstjpegdec.c: (gst_idct_method_get_type), (gst_jpeg_dec_class_init), (gst_jpeg_dec_init), (gst_jpeg_dec_decode_indirect), (gst_jpeg_dec_decode_direct), (gst_jpeg_dec_chain), (gst_jpeg_dec_sink_event), (gst_jpeg_dec_set_property), (gst_jpeg_dec_get_property): * ext/jpeg/gstjpegdec.h: API: Added IDCT method property Small cleanups. Avoid dynamic allocation of trivial fixed structure. Allocate enough space for temp 4:4:4 YUV buffers. Fixes #343661.