- Update to 0.10.29

This commit is contained in:
Benjamin Otte 2010-04-30 14:49:26 +00:00
parent bc42fe160f
commit 9e7ffe464b
4 changed files with 7 additions and 70 deletions

View File

@ -1 +1 @@
gstreamer-0.10.28.tar.bz2 gstreamer-0.10.29.tar.bz2

View File

@ -1,64 +0,0 @@
From 8fe63000de31bb2bcf346d59230dea06117997cd Mon Sep 17 00:00:00 2001
From: Benjamin Otte <otte@redhat.com>
Date: Fri, 12 Mar 2010 16:42:47 +0100
Subject: [PATCH] plugins: Do not ever unload a plugin after calling into it
This is what can happen in a plugin_init function:
- An element based on GstBaseSink is registered
- Other elements fail to register
- The plugin_init function returns FALSE
Now if this the plugin is the first plugin to link against
libgstbase.so, it will have caused libgstbase.so to be loaded and static
strings from that library will have been added to gobject while
registering GstBaseSink.
So unloading the plugin will cause those strings to go stale and the
next plugin using GstBaseSink will crash. So we must not unload modules
after calling into them ever.
https://bugzilla.redhat.com/show_bug.cgi?id=572800
---
gst/gstplugin.c | 9 ++++++---
1 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/gst/gstplugin.c b/gst/gstplugin.c
index 0f146ae..af62434 100644
--- a/gst/gstplugin.c
+++ b/gst/gstplugin.c
@@ -412,18 +412,22 @@ gst_plugin_register_func (GstPlugin * plugin, const GstPluginDesc * desc,
gst_plugin_desc_copy (&plugin->desc, desc);
+ /* make resident so we're really sure it never gets unloaded again.
+ * Theoretically this is not needed, but practically it doesn't hurt.
+ * And we're rather safe than sorry. */
+ if (plugin->module)
+ g_module_make_resident (plugin->module);
+
if (user_data) {
if (!(((GstPluginInitFullFunc) (desc->plugin_init)) (plugin, user_data))) {
if (GST_CAT_DEFAULT)
GST_WARNING ("plugin \"%s\" failed to initialise", plugin->filename);
- plugin->module = NULL;
return NULL;
}
} else {
if (!((desc->plugin_init) (plugin))) {
if (GST_CAT_DEFAULT)
GST_WARNING ("plugin \"%s\" failed to initialise", plugin->filename);
- plugin->module = NULL;
return NULL;
}
}
@@ -646,7 +650,6 @@ gst_plugin_load_file (const gchar * filename, GError ** error)
GST_PLUGIN_ERROR_MODULE,
"File \"%s\" appears to be a GStreamer plugin, but it failed to initialize",
filename);
- g_module_close (module);
goto return_error;
}
--
1.6.6.1

View File

@ -5,8 +5,8 @@
%define _libxml2 2.4.0 %define _libxml2 2.4.0
Name: %{gstreamer} Name: %{gstreamer}
Version: 0.10.28 Version: 0.10.29
Release: 2%{?dist} Release: 1%{?dist}
Summary: GStreamer streaming media framework runtime Summary: GStreamer streaming media framework runtime
Group: Applications/Multimedia Group: Applications/Multimedia
@ -34,7 +34,6 @@ BuildRequires: gcc-c++
# For the GStreamer RPM provides # For the GStreamer RPM provides
Patch1: gstreamer-inspect-rpm-format.patch Patch1: gstreamer-inspect-rpm-format.patch
Patch2: 0001-plugins-Do-not-ever-unload-a-plugin-after-calling-in.patch
Source1: gstreamer.prov Source1: gstreamer.prov
Source2: macros.gstreamer Source2: macros.gstreamer
@ -103,7 +102,6 @@ with different major/minor versions of GStreamer.
%setup -q -n gstreamer-%{version} %setup -q -n gstreamer-%{version}
%patch1 -p1 -b .rpm-provides %patch1 -p1 -b .rpm-provides
%patch2 -p1 -b .no-unload
%build %build
# 0.10.0: manuals do not build due to an openjade error; disable for now # 0.10.0: manuals do not build due to an openjade error; disable for now
@ -214,6 +212,9 @@ rm -rf $RPM_BUILD_ROOT
%{_sysconfdir}/rpm/macros.gstreamer %{_sysconfdir}/rpm/macros.gstreamer
%changelog %changelog
* Fri Apr 30 2010 Benjamin Otte <otte@redhat.com> 0.10.29-1
- Update to 0.10.29
* Mon Mar 15 2010 Benjamin Otte <otte@redhat.com> 0.10.28-2 * Mon Mar 15 2010 Benjamin Otte <otte@redhat.com> 0.10.28-2
- Fix crashes when plugin init fails (#572800) - Fix crashes when plugin init fails (#572800)

View File

@ -1 +1 @@
1c7accac718fe211ff91323c27d4ae02 gstreamer-0.10.28.tar.bz2 c92d6bce4fc65fa9d5a3ad35cdd1a466 gstreamer-0.10.29.tar.bz2