[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Bug#705435: [kfreebsd] hangs on pulseaudio --start



Control: tags -1 + patch

The simple task of starting a pulseaudio daemon, seems to require
creation of a lockfile, using an additional thread to synchronise that,
then forking, doing the same again using two more threads, and forking
once more.

Happily I found a much, much simpler solution in FreeBSD ports, where a
similar problem had already been reported in this code.  The relevant
block is simply commented out and yet I don't notice any functional
difference.  Only that it works reliably and allows GDM3 and GNOME
sessions to start (have tested this on kfreebsd-amd64).

http://svnweb.freebsd.org/ports/head/audio/pulseaudio/files/patch-src_daemon_main.c?r1=231972&r2=231971&pathrev=231972

Please could we apply the same change (attached, commented and cleaned
up) for kFreeBSD, to fix this bug for wheezy.  The other patch I
suggested earlier is made unnecessary by this.

Thank you,
Regards,
-- 
Steven Chamberlain
steven@pyro.eu.org
Index: pulseaudio-2.0/src/daemon/main.c
===================================================================
--- pulseaudio-2.0.orig/src/daemon/main.c	2012-05-13 14:26:37.000000000 +0100
+++ pulseaudio-2.0/src/daemon/main.c	2013-04-16 00:25:32.164872810 +0100
@@ -735,6 +735,10 @@
          * first take the autospawn lock to make things
          * synchronous. */
 
+        /* This locking and thread synchronisation code doesn't work reliably
+         * on kFreeBSD (Debian bug #705435), or in upstream FreeBSD ports
+         * (bug reference: ports/128947, patched in SVN r231972). */
+#if !defined(__FreeBSD__) && !defined(__FreeBSD_kernel__)
         if ((autospawn_fd = pa_autospawn_lock_init()) < 0) {
             pa_log("Failed to initialize autospawn lock");
             goto finish;
@@ -746,6 +750,7 @@
         }
 
         autospawn_locked = TRUE;
+#endif
     }
 
     if (conf->daemonize) {

Reply to: