Package: libgstreamermm-0.10-2 Version: 0.10.9-1 Severity: normal File: gstreamermm-0.10 Tags: patch
I tried to compile and use another version of subtitleeditor which now requires gstreamermm-0.10. New version works unstable crashing sometimes. With valgrind I found that there is invalid write of 8 bytes (pointer on x86_64) outside of allocated block of 712 bytes. Some investigation showed that gstreamermm have wrong definition of struct _GstPlayBin2Class. It has 'source_setup' element which missing in gstreamer data structures and therefore forcing application to write beyond 712 byte block allocated for class. 'source_setup' appeared two times in whole gstreamermm (excluding ..hg and .ccg files) and was used nowhere. So I think it was added by mistake. Below you can find a sample patch. -- System Information: Debian Release: wheezy/sid APT prefers testing APT policy: (500, 'testing'), (50, 'unstable'), (1, 'experimental') Architecture: amd64 (x86_64) Kernel: Linux 3.2.0-1-amd64 (SMP w/2 CPU cores) Locale: LANG=ru_RU.UTF-8, LC_CTYPE=ru_RU.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Versions of packages libgstreamermm-0.10-2 depends on: ii libc6 2.13-26 ii libgcc1 1:4.6.2-12 ii libglib2.0-0 2.30.2-6 ii libglibmm-2.4-1c2a 2.30.0-2 ii libgstreamer-plugins-base0.10-0 0.10.35-1 ii libgstreamer0.10-0 0.10.35-1 ii libsigc++-2.0-0c2a 2.2.9-1.1 ii libstdc++6 4.6.2-12 ii libxml++2.6-2 2.34.2-1 ii libxml2 2.7.8.dfsg-7 libgstreamermm-0.10-2 recommends no packages. libgstreamermm-0.10-2 suggests no packages. -- no debconf information
diff -ur gstreamermm-0.10.9/gstreamer/gstreamermm/playbin2.cc gstreamermm-0.10.9-fixed/gstreamer/gstreamermm/playbin2.cc --- gstreamermm-0.10.9/gstreamer/gstreamermm/playbin2.cc 2011-04-14 15:05:19.000000000 +0400 +++ gstreamermm-0.10.9-fixed/gstreamer/gstreamermm/playbin2.cc 2012-03-02 23:36:48.464667281 +0400 @@ -17,7 +17,6 @@ void (*video_tags_changed) (GstPlayBin2* element, gint arg0); void (*audio_tags_changed) (GstPlayBin2* element, gint arg0); void (*text_tags_changed) (GstPlayBin2* element, gint arg0); - void (*source_setup) (GstPlayBin2* element, GstElement* arg0); GstTagList* (*get_video_tags) (GstPlayBin2* element, gint arg0); GstTagList* (*get_audio_tags) (GstPlayBin2* element, gint arg0); GstTagList* (*get_text_tags) (GstPlayBin2* element, gint arg0); diff -ur gstreamermm-0.10.9/gstreamer/gstreamermm/uridecodebin.cc gstreamermm-0.10.9-fixed/gstreamer/gstreamermm/uridecodebin.cc --- gstreamermm-0.10.9/gstreamer/gstreamermm/uridecodebin.cc 2011-04-14 15:05:35.000000000 +0400 +++ gstreamermm-0.10.9-fixed/gstreamer/gstreamermm/uridecodebin.cc 2012-03-02 23:36:57.680667572 +0400 @@ -16,7 +16,6 @@ GValueArray* (*autoplug_sort) (GstURIDecodeBin* element, GstPad* arg0, GstCaps* arg1, GValueArray* arg2); GstAutoplugSelectResult (*autoplug_select) (GstURIDecodeBin* element, GstPad* arg0, GstCaps* arg1, GstElementFactory* arg2); void (*drained) (GstURIDecodeBin* element); - void (*source_setup) (GstURIDecodeBin* element, GstElement* arg0); }; extern "C"