rpms/pulseaudio/EL-5 pulseaudio-0.9.10-libtool.patch, NONE, 1.1 pulseaudio.spec, 1.5, 1.6

Lubomir Rintel lkundrak at fedoraproject.org
Mon Aug 24 13:04:55 UTC 2009


Author: lkundrak

Update of /cvs/pkgs/rpms/pulseaudio/EL-5
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv20472

Modified Files:
	pulseaudio.spec 
Added Files:
	pulseaudio-0.9.10-libtool.patch 
Log Message:
* Mon Aug 24 2009 Lubomir Rintel <lkundrak at v3.sk> 0.9.10-1.3
- Work around broken libtool (#455842, Michal Schmidt)


pulseaudio-0.9.10-libtool.patch:
 ltdl-bind-now.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- NEW FILE pulseaudio-0.9.10-libtool.patch ---
Workaround libtool 1.5.22 bugs

Lennart in http://pulseaudio.org/wiki/KnownIncompatibilities said:
  libtool's libltdl 1.5.22 is buggy and causes PA to abort immediately after
  startup with a mutex locking error. Upgrade to 1.5.24 at least.

The mutex locking error is caused by lt_dlmutex_register() calling the new
unlock function. A workaround could be to ignore the call to the unlock
function made by lt_dlmutex_register().

But there's yet another bug. The seterror function is not set by
lt_dlmutex_register(). Therefore the get/set symmetry is broken.
lt_dlmutex_register() won't allow us to not set a get function and since
neither lt_dlmutex_seterror_func nor lt_dllast_error are visible outside of
ltdl.c, we cannot even fix it afterwards. We could try to avoid ltdl functions
which depend on LT_DLMUTEX_{SET,GET}ERROR. lt_dlopenext() is one of those. It
can be worked around by using lt_dlopen() instead and using the filename with
the ".so" extension. But there may be other things affected by broken
LT_DLMUTEX_SET_ERROR. At the very least, any error messages from ltdl would
show up as '(null)'.

In the end the easiest fix is to skip calling lt_dlmutex_register() completely.
It was meant to provide thread-safety for ltdl, but it could not work in all
situations, later libtool releases deprecated this function and libtool 2.2
does not have it anymore. PA stopped using it in v0.9.15.
I don't know whether PA loads modules from a single thread only or not. If not,
we could add locking around ltdl calls in PA.

--
Michal Schmidt <mschmidt at redhat.com>

Index: pulseaudio-0.9.10/src/daemon/ltdl-bind-now.c
===================================================================
--- pulseaudio-0.9.10.orig/src/daemon/ltdl-bind-now.c
+++ pulseaudio-0.9.10/src/daemon/ltdl-bind-now.c
@@ -154,7 +154,7 @@ void pa_ltdl_init(void) {
     pa_assert_se(lt_dlinit() == 0);
     pa_assert_se(libtool_mutex = pa_mutex_new(TRUE, FALSE));
 #ifdef HAVE_LT_DLMUTEX_REGISTER
-    pa_assert_se(lt_dlmutex_register(libtool_lock, libtool_unlock, libtool_set_error, libtool_get_error) == 0);
+//  pa_assert_se(lt_dlmutex_register(libtool_lock, libtool_unlock, libtool_set_error, libtool_get_error) == 0);
 #endif
 
 #ifdef PA_BIND_NOW


Index: pulseaudio.spec
===================================================================
RCS file: /cvs/pkgs/rpms/pulseaudio/EL-5/pulseaudio.spec,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -p -r1.5 -r1.6
--- pulseaudio.spec	16 Jul 2009 14:57:42 -0000	1.5
+++ pulseaudio.spec	24 Aug 2009 13:04:55 -0000	1.6
@@ -3,11 +3,12 @@
 Name:		pulseaudio
 Summary: 	Improved Linux sound server
 Version:	0.9.10
-Release:	1%{?dist}.2
+Release:	1%{?dist}.3
 License:	GPLv2+
 Group:		System Environment/Daemons
 Source0:	http://0pointer.de/lennart/projects/pulseaudio/pulseaudio-%{version}.tar.gz
 Patch0:         pulseaudio-0.9.10-CVE-2009-1894.patch
+Patch1:         pulseaudio-0.9.10-libtool.patch
 URL:		http://pulseaudio.org
 BuildRoot:	%{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 BuildRequires: tcp_wrappers
@@ -151,6 +152,7 @@ This package contains command line utili
 %prep
 %setup -q -T -b0
 %patch0 -p1 -b .CVE-2009-1894
+%patch1 -p1 -b .libtool
 
 %build
 %configure --disable-ltdl-install --disable-static --disable-rpath --with-system-user=pulse --with-system-group=pulse --with-realtime-group=pulse-rt --with-access-group=pulse-access
@@ -370,6 +372,9 @@ fi
 %{_mandir}/man1/pax11publish.1.gz
 
 %changelog
+* Mon Aug 24 2009 Lubomir Rintel <lkundrak at v3.sk> 0.9.10-1.3
+- Work around broken libtool (#455842, Michal Schmidt)
+
 * Thu Jul 16 2009 Lubomir Rintel <lkundrak at v3.sk> 0.9.10-1.2
 - Fix CVE-2009-1894
 




More information about the fedora-extras-commits mailing list