I've been contributing to the development of the perl Fuse binding
module recently, and have discovered an issue with the libfuse that
MacFuse supplies as part of its distribution. It seems that normally,
the symbol bindings are handled lazily, i.e., whenever the symbol is
specifically asked for, it's resolved (as well as any symbols which
depend upon the needed ones). Unfortunately, by default, as part of
Perl's tests, it sets the environment variable 'PERL_DL_NONLAZY' to 1
when doing 'make test', which causes shared library loading to pass
the RTLD_NOW option flag (which causes all symbols to be resolved when
the library is loaded).

This exposes the problem I mention; specifically that libfuse has an
unsafisfied link dependency for the symbol '_iconv' which is only
exposed when running 'make test'. Apparently dynamically loaded
libraries don't reference the process namespace on OS X, so even
though libiconv is linked to our shared library, the dependency
doesn't get resolved, causing the library load to fail. The current
version of the perl-Fuse sources has a workaround in Makefile.PL to
force 'make test' *not* to set the environment variable I mention
above; however, this shouldn't happen in the first place, so libiconv
should be either linked statically, or added to the runtime library
list, so that this doesn't happen. I know development has slowed, but
whenever a new release does come out, can this issue be addressed?

Thanks,

--
Derrik Pates
[email protected]

-- 
You received this message because you are subscribed to the Google Groups 
"MacFUSE" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/macfuse?hl=en.

Reply via email to