The alsa-lib doesn't set the close-on-exec flag on its PCM device FD's. The consequence is that processes spawned by alsa-lib clients inherit an open file handle to the PCM device and thereby block it.
For example, mplayer can disable and re-launch the xscreensaver daemon. In the alsa-enabled version of mplayer, the xscreensaver process inherits a pcm handle, although xss can't make use of it. This effectively forces me to restart xss manually after each mplayer session. Suggested fix: --- src/pcm/pcm_hw.c.orig 2002-10-12 13:49:54.000000000 +0200 +++ src/pcm/pcm_hw.c 2003-02-03 23:07:14.000000000 +0100 @@ -867,6 +867,11 @@ ret = -errno; goto _err; } + if( fcntl( fd, F_SETFD, FD_CLOEXEC ) != 0 ) { + SYSERR("fcntl FD_CLOEXEC failed"); + ret = -errno; + goto _err; + } if (ioctl(fd, SNDRV_PCM_IOCTL_PVERSION, &ver) < 0) { SYSERR("SNDRV_PCM_IOCTL_PVERSION failed"); ret = -errno; -- Best Regards, | Hi! I'm a .signature virus. Copy me into Sebastian | your ~/.signature to help me spread!
msg06249/pgp00000.pgp
Description: PGP signature