]> git.alsa-project.org Git - alsa-plugins.git/commitdiff
Set CLOEXEC flag for pipes in PulseAudio plugins
authorChris Rankin <rankincj@yahoo.com>
Tue, 27 Sep 2011 07:44:15 +0000 (09:44 +0200)
committerTakashi Iwai <tiwai@suse.de>
Tue, 27 Sep 2011 07:54:09 +0000 (09:54 +0200)
I have noticed that Alsa / PulseAudio are leaking a couple of pipes after a
fork/exec, and have traced the leak to the following two plugins:

libasound_module_ctl_pulse.so
libasound_module_pcm_pulse.so

This is with Fedora 15. I have attached a patch for the problem.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
pulse/pulse.c

index c34671b641607deaea6fea4103e434f93ebb4932..cf0546beaa2dff508434db38bb4809f96ae25ea0 100644 (file)
@@ -114,6 +114,11 @@ static int make_nonblock(int fd) {
        return fcntl(fd, F_SETFL, fl | O_NONBLOCK);
 }
 
+static int make_close_on_exec(int fd)
+{
+    return fcntl(fd, F_SETFD, FD_CLOEXEC);
+}
+
 snd_pulse_t *pulse_new(void)
 {
        snd_pulse_t *p;
@@ -134,7 +139,9 @@ snd_pulse_t *pulse_new(void)
        p->thread_fd = fd[1];
 
        make_nonblock(p->main_fd);
+       make_close_on_exec(p->main_fd);
        make_nonblock(p->thread_fd);
+       make_close_on_exec(p->thread_fd);
 
        p->mainloop = pa_threaded_mainloop_new();
        if (!p->mainloop)