On 25/10/14 01:35, Richard Saunders wrote:
> Thanks for the suggestion; it built the binary version but
> unfortunately it did not solve the 'undefined symbols' problem.  The
> .deb file was installed using this command:
>
> dpkg -i ~/ws/dlz-ldap-enum/dlz-ldap-enum_1.0.2-1_amd64.deb
>
> It installed successfully but bind still fails to start and the same
> error message is in the log:
>
>     dlz_dlopen failed to open library
>     '/usr/lib/dlz-ldap-enum/dlz_ldap_enum.so' -
>     /usr/lib/dlz-ldap-enum/dlz_ldap_enum.so: undefined symbol: ns_g_mctx
>


I've had a brief look at this now.

ns_g_mctx is defined in globals.h from the bind9 package.

globals.h is not included in the headers in the libbind-dev package

Therefore, there is a possible fault with the dlz-ldap-enum package.  It
did work before, so this is a new problem, maybe the symbol was moved in
bind9 or maybe it was in a different header in the past.

Looking at it more closely:

- this symbol is being used in the memory management API from ISC, e.g.
isc_mem_get, isc_mem_free, etc
- the other main user of the dlz API is Samba - in their code, they use
their own memory management API so they don't refer to this symbol

There are at least three ways to proceed:

- the ns_g_mctx definition could be moved from globals.h to another
header file that is in the public API of bind9
- the globals.h header file could be added to the public API of bind9
- the dlz-ldap-enum code should adapted to do memory management without
the isc_mem_* functions
    - the ./contrib/dlz/modules/bdbhpt/dlz_bdbhpt_dynamic.c example from
bind9 doesn't appear to use the isc_mem_* functions

There is more to it though - it appears the dlz_dlopen.h file is still
missing from the latest versions of libbind-dev in Debian.  This is a
pain.  It is not clear if bind is being compiled with dlz_dlopen
support.  I've cc'd LaMont, the bind9 package maintainer, I'd like him
to clarify that dlz_dlopen support is compiled into the bind9 package in
Debian and Ubuntu, otherwise you need to recompile the bind9 package
with the "--with-dlopen" option to configure as well.  You can probably
just add that in debian/rules somewhere in the bind9 package.

I've opened a Debian bug for part of this issue, the missing dlz_dlopen.h:

 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=766827


Reply via email to