[pulseaudio-discuss] --check option seems not to work from su(1) as daemon user

Glenn Golden gdg at zplane.com
Sun Aug 31 18:45:03 PDT 2014


Hi Tanu,

OK, next batch of questions pertaining to the Wiki writeup. (Just remember:
I warned you... :) )

Some of these probably seem off-topic relative to runtime dirs and pid files,
but what's happened is that it seems almost impossible to discuss that narrow
topic satisfactorily without also addressing the somewhat larger issue of
"identification", i.e. "Which PA daemon do we really want to be talking to?"

Various entities that care about identification would seem to include:

   * pulseaudio(1) itself: --start, --kill, --check options 
   * pavucontrol
   * pactl
   * pacmd
   * Programs (or humans) that send signals to PADs (PA daemons) for
     control purposes.

And of course, in addition to the above, the audio clients themselves, but that
is surely outside the scope of what I want to write up for the Wiki.

Anyway... it seemed to me like the core of this "identification" question is
a better understanding on my part of the feasible/supported PA topologies,
so that's what most of the questions below relate to.  Here's a list of
possibilities, and my take on each (which may be totally wrong). Please
comment on the reality of these:

   - One user runs a single PAD on local host. [Certain]

   - One user runs multiple PADs on local host. [The doc for --use-pid-file
     implies that this is possible, but haven't been able to get it to work;
     see Q1 and Q3 below.]

   - Multiple users on a given host, each of whom may be running one or more
     PADs on that host. [Think so, not sure.]

   - Single system-wide PAD on a given host. [Certain]

   - Multiple system-wide PADs on a given host. [No clue.]

   - One or more system-wide PADs operating concurrently with one or more
     user PADs. [No clue]

And then, in a more or less separate category:

   - One or more users on a given host communicating with networked PADs
     (i.e. PADs running on a remote host, but which nevertheless need to be
     "addressed" in some fashion by control tools like pavucontrol, pacmd, etc.)


So -- finally -- here are the questions:

NOTE: In what follows "anchored" means "having an associated pid file".

1.  Is there a legitimate user purpose to --use-pid-file=0 ? Or is it intended
    perhaps just for developer use only? (If the latter, there's probably no
    need to document the existence of unanchored PADs in the Wiki blurb).

2.  How do {pavucontrol, pactl} select which PAD to communicate with? I had
    assumed it was via the pidfile, but this seems not to be the case, as it
    is able to establish communication even with a non-anchored PAD:

      # Begin with no PAD running
      $ pulseaudio -v --start --use-pid-file=0
      I: [pulseaudio] main.c: Daemon startup successful.
      $ pavucontrol				# Seems to work normally

    Otoh, pacmd seems to use the pidfile, because if you start pacmd with only
    an unanchored PAD, it whines that a PAD is not running.

3.  Doc for --use-pid-file says: "If this option is disabled it is possible
    to run multiple sound servers per user."

    I played with this as an ordinary user, could not figure out a way to
    get multiple PADs running. E.g.:

      # Begin with no PAD running
      $ pulseaudio -v --start --use-pid-file=0
      I: [pulseaudio] main.c: Daemon startup successful.

      $ pulseaudio -v --start --use-pid-file=0
      E: [pulseaudio] main.c: Daemon startup failed.

    Syslog shows the second attempt failed with EADDRINUSE on bind(). Not sure
    what address is conflicting (the listening port for remote connections?)
    but in any case did not see any options in pulseaudio.1 which allows the
    user to modify any port or other address, in order to avoid conflict.
    So assuming that the magic incantation for running multiple unanchored
    PADs is something entirely different.

    You had remarked earlier:

      "one example would be a scenario where the user has one regular daemon
       running, and then the user runs a PulseAudio test suite that starts
       another daemon for the tests under the same user but in a different
       environment"

    How does that test suite manage to start the second PA daemon? In partick,
    what games does it play with the "different" environment to allow a second
    instance?

That's all for now. :)  Anyway, with answers to the above, I should be able to
get in place a skeleton for the wiki writeup, and then fill in the details on
the fly.

Thanks!

Glenn


More information about the pulseaudio-discuss mailing list