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 ste...@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) {