need help debugging wierd dlopen failure

Jim Newton jimka.issy at gmail.com
Tue Sep 20 09:53:12 UTC 2016


If someone could give me some clues about how to debug this it would be
great.

I'm trying to figure out why "it" fails to load a particular dylib under
macOS.
"it" meaning that I'm not sure who is actually failing, but I suspect it is
actually a failure detected and reported by dlopen(3) itself, rather than
something wrong in cffi.

The problem seems to be that loading libgdk-x11-2.0.0.dylib triggers a
complaint about a library I have loaded from a different place, but the
error message indicates a location I have not loaded my LD_LIBRARY_PATH.

Could it possibly be that libgdk-x11-2.0.0.dylib has a hard coded path in
it pointing to /usr/local/lib ?

If someone could give me some clues about how to debug this it would be
great.

I've set up my LD_LIBRARY_PATH so that it seems to be loading the correct
libcairo.2.dylib from /usr/local/Cellar/cairo/1.12.16_1/lib/libcairo.2.dylib.
The reason I think this is because both vmmap (unix command line) and
cffi::list-foreign-libraries (lisp) give compatible results.

sh> vmmap -w 16787 | grep dylib | sed -e 's/^.*SM=...  //' | grep cairo
/usr/local/Cellar/cairo/1.14.6_1/lib/libcairo.2.dylib
sh>

and
CL-USER> (cffi::list-foreign-libraries)
(...
 #<CFFI:FOREIGN-LIBRARY
   :LIBCAIRO #P"/usr/local/Cellar/cairo/1.12.16_1/lib/libcairo.dylib"
(truename=#P"/usr/local/Cellar/cairo/1.12.16_1/lib/libcairo.2.dylib")>)
CL-USER>

However, when I attempt to load libgdk-x11-2.0.0.dylib it complains that it
cannot find a particular symbol in /usr/local/lib/libcairo.dylib.  Why is
it complaining about /usr/local/lib/libcairo.dylib?

Unable to load any of the alternatives:
   ("libgdk-x11-2.0.0.dylib" "libgdk-x11-2.0.dylib")

Attempting to load GDK::GDK from lib "libgdk-x11-2.0.dylib"
(%LOAD-FOREIGN-LIBRARY GDK

 /usr/local/Cellar/gtk+/2.24.24/lib/libgdk-x11-2.0.0.dylib)
Unable to load foreign library (GDK::GDK).
  Error opening shared object
"/usr/local/Cellar/gtk+/2.24.24/lib/libgdk-x11-2.0.0.dylib":
  dlopen(/usr/local/Cellar/gtk+/2.24.24/lib/libgdk-x11-2.0.0.dylib, 10):
Symbol not found: _cairo_xlib_surface_create
  Referenced from: /usr/local/Cellar/gtk+/2.24.24/lib/libgdk-x11-2.0.0.dylib
  Expected in: /usr/local/lib/libcairo.dylib
 in /usr/local/Cellar/gtk+/2.24.24/lib/libgdk-x11-2.0.0.dylib.

Attempting to load GDK::GDK from lib "libgdk-x11-2.0.0.dylib"
(%LOAD-FOREIGN-LIBRARY GDK

 /usr/local/Cellar/gtk+/2.24.24/lib/libgdk-x11-2.0.0.dylib)
Unable to load foreign library (GDK::GDK).
  Error opening shared object
"/usr/local/Cellar/gtk+/2.24.24/lib/libgdk-x11-2.0.0.dylib":
  dlopen(/usr/local/Cellar/gtk+/2.24.24/lib/libgdk-x11-2.0.0.dylib, 10):
Symbol not found: _cairo_xlib_surface_create
  Referenced from: /usr/local/Cellar/gtk+/2.24.24/lib/libgdk-x11-2.0.0.dylib
  Expected in: /usr/local/lib/libcairo.dylib
 in /usr/local/Cellar/gtk+/2.24.24/lib/libgdk-x11-2.0.0.dylib.
   [Condition of type CFFI:LOAD-FOREIGN-LIBRARY-ERROR]
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/cffi-devel/attachments/20160920/a2e8c4e3/attachment.html>


More information about the cffi-devel mailing list