GNOME Bugzilla – Bug 745054
glimagesink: Segfault with webm/vp8 files that has odd height
Last modified: 2015-03-01 14:48:41 UTC
Created attachment 297716 [details] Debug log level 2 After creating a new project, choose no preset, and added my video, Pitivi crash. The video was created in a Fedora 21 VM running on VirtualBox, with GNOME video capture system. The video is watchable without problems with Totem. The problem persists with the latest daily build Pitivi 64 bits bundle. General Complete name : Screencast_20-02-2015_19:11:33.webm Format : WebM Format version : Version 2 File size : 908 KiB Duration : 38s 227ms Overall bit rate : 195 Kbps Encoded date : UTC 2015-02-20 18:11:33 Writing application : GStreamer Matroska muxer Writing library : GStreamer plugin version 1.4.4 Video ID : 1 Format : VP8 Codec ID : V_VP8 Bit rate : 180 Kbps Width : 1 920 pixels Height : 961 pixels Display aspect ratio : 1.998 Frame rate mode : Variable Compression mode : Lossy Title : Video Language : English Default : Yes Forced : No
Created attachment 297717 [details] Stack traces
Could you share the file please?
http://demo.ovh.eu/download/332064f256bffa1550c3767f0fc8f4e4/Screencast_20-02-2015_19_11_33.webm The link is valid for 30 days
Since this bug only reproduces with glimagesink I think it lies around the GL plugins. It can easily be reproduced with the following steps: * wget http://demo.ovh.eu/download/332064f256bffa1550c3767f0fc8f4e4/Screencast_20-02-2015_19_11_33.webm * in gst-plugins-base/tests/example/playback run $ ./playback-test 0 /path/to/Screencast_20-02-2015_19_11_33.webm * Expand "playbin options" and set 'glimagesink' in the "Video Sink" text entry * Press the Play button Result: message from "playbin" (new-clock): GstMessageNewClock, clock=(GstClock)"\(GstSystemClock\)\ GstSystemClock"; 0:00:17.703020361 26617 0x7fffc4002770 ERROR glcontext gstglcontext.c:1068:_gst_gl_debug_callback:<glcontextglx0> high: GL error from API id:1, GL_INVALID_OPERATION in glTexSubImage2D(invalid PBO access) 0:00:17.703107823 26617 0x7fffc4002770 ERROR glcontext gstglcontext.c:1068:_gst_gl_debug_callback:<glcontextglx0> high: GL error from API id:1, GL_INVALID_OPERATION in glTexSubImage2D(invalid PBO access) Program received signal SIGSEGV, Segmentation fault.
+ Trace 234704
Thread 140736817264384 (LWP 26625)
A debugging session is active. Inferior 1 [process 26617] will be killed.
I just tried again as I had the impression it could be linked to https://bugzilla.gnome.org/show_bug.cgi?id=744246 and it looks like the trace is now different: (gdb) bt
+ Trace 234732
I had a quick look, no pinpoint yet. VP8 decoder does not implement direct rendering into GLMemory, so it's not directly bug #744246 (it copies the image to the GstBuffer from downstream pool). The interesting parts so far is that gst_vp8_dec_image_to_buffer() writes passed the end of GlMemory allocated block. There is a bug in that function, the width used to copy is in pixels instead of bytes. Though for I420 (our case) it makes no difference, and anyway the copy size would be bigger. It's a video of height 961. That fact it has an odd height is most likely related.
commit 283aca3b5151172698efea88891e486e23280d98 Author: Nicolas Dufresne <nicolas.dufresne@collabora.co.uk> Date: Sun Mar 1 09:43:32 2015 -0500 glbufferpool: Fix offset for odd height We also need to recalculate the offset, since otherwise the frame mapping will be forward two lines in the U and V planes (I420) due to gst_video_info_align() round up the Y plane to a even number of lines. https://bugzilla.gnome.org/show_bug.cgi?id=745054