[pulseaudio-discuss] [ANNOUNCE] PulseAudio 0.9.15-test3

Sean McNamara smcnam at gmail.com
Wed Feb 25 16:38:10 PST 2009


On Wed, Feb 25, 2009 at 6:13 PM, Erich Boleyn <erich at uruk.org> wrote:
> Greetings all,
> I tried building and running the new PulseAudio, and it is getting
> module load failures for the alsa-related modules.
> For example, in the "/usr/bin/pulseaudio --dump-modules" command,
> it get the following failures:
>        E: modinfo.c: Failed to open module "/usr/lib64/pulse-0.9.15/modules/module-alsa-card": file not found
>        E: modinfo.c: Failed to open module "/usr/lib64/pulse-0.9.15/modules/module-alsa-sink": file not found
>        E: modinfo.c: Failed to open module "/usr/lib64/pulse-0.9.15/modules/module-alsa-source": file not found

Ditto here. I pinged Lennart about this on IRC the other day, but
unfortunately I had to run before I was able to resolve this.

The initial effort suggested by Lennart is to run `strace -eopen` on
pulseaudio, and look through the open() calls for NSFD (No Such File
or Directory). It's gonna have several of them due to the way
resources and libraries are found by searching through a list of
paths, but each unique filename it tries to look up should ultimately
result in a "good" open() call (i.e., no error).

My investigation suggests that it's able to open() these sinks
numerous times, so maybe the problem is that it can't open them when
it really needs to. I'm just not sure without further investigation. I
do have a gut feeling, though, that it has something to do with
libtool and its attempt to resolve the symbols in the modules. When PA
calls lt_dlopenext(), libltdl will bail out as soon as it fails to
resolve a symbol or a link-time library dependency. The problem is
occurring because it bails out with a NULL pointer, and the
lt_dlerror() call indicates "file not found" (which would indicate
that, somewhere along the line, an ENOENT was produced by some code);
but I am skeptical about whether "file not found" really means that as
such, or whether it means "I tried to resolve a symbol, but couldn't".
The string "file not found" is not present in the C library (according
to the `strings` program), so a direct libc call can't be producing
this message. If a libc call (i.e., fopen()) got an error, the errno
would be set so that strerror(ENOENT) yields the text "No such file or
directory". I'm thinking that this problem is unusually difficult to
debug because libltdl is *not* robust in its error reporting!

I'm on Ubuntu 9.04 Alpha, x86_64. What is your platform, out of interest?

I'll keep you posted as to whether I make progress towards resolving
this issue or not.



> I could probably do a better job debugging what's wrong, but won't
> have time to look at it for at least a week (crunch at work).
> --
>    Erich Stefan Boleyn     <erich at uruk.org>     http://www.uruk.org/
> "Reality is truly stranger than fiction; Probably why fiction is so popular"
> _______________________________________________
> pulseaudio-discuss mailing list
> pulseaudio-discuss at mail.0pointer.de
> https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss

More information about the pulseaudio-discuss mailing list