[pulseaudio-discuss] PulseAudio shared memory files

Brian Cameron brian.cameron at oracle.com
Wed Nov 2 13:02:23 PDT 2011


I notice that PulseAudio version 1.1 seems to leave behind shared
memory files when my GNOME session exits, or when I kill the pulseaudio
daemon from within my GNOME session.

For example, when my session is running I see 3 shared memory files,
associated with the following processes:

- The PulseAudio daemon
- gnome-volume-control-applet
- gnome-settings-daemon

Upon session logout or when killing the PulseAudio daemon, the shared
memory file associated with the PulseAudio daemon gets cleaned up nicely
but the two shared memory files associated with clients stay around.
I notice that when the pulseaudio daemon restarts it does clean up these
stale client files okay.  So to test this, I renamed the
/usr/bin/pulseaudio daemon to a different name just before killing it
from within my GNOME session to prevent it from just restarting and
cleaning them up.

After killing the PulseAudio daemon, I notice if I then kill the
gnome-volume-control-applet or gnome-settings-daemon process, the
shared memory files associated with these files still do not get
cleaned up.

I am not sure, but this may be related to a bug I see:

   https://bugzilla.redhat.com/show_bug.cgi?id=444684

Based on this bug, I see that the xsmp module is supposed to cleanup
shared memory files.  I do see that the xsmp module is loading fine on
my system, and when I enable pulseaudio debug, I see the output in the
attached file which seems to indicate that the xsmp module is noticing
that the Xserver died and does exit cleanly.

So, I am wondering if this is how PulseAudio is intended to work.
Maybe PulseAudio is designed to only cleanup the file associated
with the daemon on clean exit.  Or is there a bug that is causing the
PulseAudio client shared memory files to not get cleaned up on
PulseAudio exit.

This is probably not such a big problem for most PulseAudio users who
use single-user desktops/laptops/etc. where there are only a few users
who might login and only a few stale files to worry about.  However, on
multi-user servers, leaving behind these files could create a resource
issue if many users login and logout leaving behind unused files.

One workaround that I notice is that if you run the
"pulseaudio --cleanup-shm" command as root, it does cleanup the files
for all users.  So, adding this command to the GDM Init script so it
gets run each time the login screen is presented will cleanup the stale
files.  Is this the right way to ensure that stale files never get left
behind?

Another issue I notice is that each time I kill the pulseaudio deamon
it leaves behind another /usr/lib/pulse/gconf-helper process.  After
killing it a bunch of times I now have over a dozen of these processes
running.

Should I file bugs for any of these issues?

Brian



More information about the pulseaudio-discuss mailing list