Bug 61800

Summary: PA incorrectly reports modules with unresolved symbols as missing
Product: PulseAudio Reporter: Vadim Troshchinskiy <vtroshchinskiy>
Component: daemonAssignee: pulseaudio-bugs
Status: RESOLVED FIXED QA Contact: pulseaudio-bugs
Severity: normal    
Priority: medium CC: lennart
Version: unspecified   
Hardware: All   
OS: All   
Whiteboard:
i915 platform: i915 features:
Attachments: Patch to call dlerror() in bind_now_open() for better reporting of module loading problems

Description Vadim Troshchinskiy 2013-03-04 15:58:43 UTC
Created attachment 75901 [details]
Patch to call dlerror() in bind_now_open() for better reporting of module loading problems

If a module exists, but some of the symbols in it can't be resolved, the following happens:

E: [] module.c: Failed to open module "module-coreaudio-detect": file not found

Even though the file is clearly present in the modules directory. This is very confusing. 

This is because bind_now_open() in src/daemon/ltdl-bind-now.c assumes any problem with dlopen is due to a missing file.

The attached patch makes it call dlerror() to report something more useful.
Comment 1 Tanu Kaskinen 2013-03-05 00:42:03 UTC
Thanks for the patch!

(In reply to comment #0)
> This is because bind_now_open() in src/daemon/ltdl-bind-now.c assumes any
> problem with dlopen is due to a missing file.

There's no such assumption. bind_now_open() sets the error to LT_ERROR_CANNOT_OPEN, which should map to error message "can't open the module". Apparently libltdl resets the error to LT_ERROR_FILE_NOT_FOUND. Would you be willing to investigate why that happens? It may be a bug in libltdl or in the way that pulseaudio uses it.
Comment 2 Tanu Kaskinen 2013-03-11 18:26:34 UTC
Judging from the lack of response, I guess that you're not willing to do deeper investigation on this bug. I sent to the mailing list a patch that contains your change and also removes the message returned by lt_dlerror() in module.c: http://thread.gmane.org/gmane.comp.audio.pulseaudio.general/16126

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.