Subject: (ITS#4830) test030-relay fails with back-meta
From: ahasenack
Date: 2007-02-02 17:03:43
Full_Name: Andreas Hasenack
Version: 2.3.33
OS: Linux
URL: ftp://ftp.openldap.org/incoming/
Submission from: (NULL) (200.140.247.99)
Hello,
while running make test on a 2.3.33 build, I get an error in
test030-relay when using the meta backend:
(...)
Using meta backend...
Starting slapd on TCP/IP port 9011...
Using ldapsearch to check that slapd is running...
Using ldapadd to populate the database...
Searching base="dc=example,dc=com"...
Searching base="o=Example,c=US"...
Search failed (255)!
./scripts/relay: line 78: kill: (31577) - Processo inexistente
>>>>> ./scripts/test030-relay failed (exit 255)
make: ** [bdb-yes] Erro 255
The log shows:
$ tail testrun/slapd.1.log
conn=3 op=1 >>> meta_search_dobind_init[0]
conn=3 op=1 << rewrite_context_apply [depth=1] string='o=Example,c=US'
==> rewrite_rule_apply rule='((.+),)?o=Example,[ ]?c=US$'
string='o=Example,c=US' [1 pass(es)]
==> rewrite_context_apply [depth=1] res={0,'dc=example,dc=com'}
[rw] searchBase: "o=Example,c=US" -> "dc=example,dc=com"
==> rewrite_context_apply [depth=1] string='(objectClass=*)'
==> rewrite_context_apply [depth=1] res={0,'NULL'}
[rw] searchFilter: "(objectClass=*)" -> "(objectClass=*)"
/home/andreas/updates-svn/openldap/BUILD/openldap-2.3.33/servers/slapd/.libs/lt- \
slapd:
symbol lookup error:
+../servers/slapd/back-meta/.libs/back_meta-2.3.so.0: undefined symbol:
ldap_back_proxy_authz_ctrl
From: ahasenack
Date: 2007-02-14 15:00:48
On Fri, Feb 02, 2007 at 04:03:43PM +0000, <email removed> wrote:
> ==> rewrite_context_apply [depth=1] string='(objectClass=*)'
> ==> rewrite_context_apply [depth=1] res={0,'NULL'}
> [rw] searchFilter: "(objectClass=*)" -> "(objectClass=*)"
> \
/home/andreas/updates-svn/openldap/BUILD/openldap-2.3.33/servers/slapd/.libs/lt- \
slapd:
> symbol lookup error:
> +../servers/slapd/back-meta/.libs/back_meta-2.3.so.0: undefined symbol:
> ldap_back_proxy_authz_ctrl
Howard debugged this on IRC and it turns out that our (mine and
_ranger_'s) libunixodbc has lt_dl* symbols in it. Relinking slapd
without the unixodbc lib fixes it.
From: hyc
Date: 2007-02-14 15:19:40
<email removed> wrote:
> On Fri, Feb 02, 2007 at 04:03:43PM +0000, <email removed> wrote:
>> ==> rewrite_context_apply [depth=1] string='(objectClass=*)'
>> ==> rewrite_context_apply [depth=1] res={0,'NULL'}
>> [rw] searchFilter: "(objectClass=*)" -> \
"(objectClass=*)"
>> \
/home/andreas/updates-svn/openldap/BUILD/openldap-2.3.33/servers/slapd/.libs/lt- \
slapd:
>> symbol lookup error:
>> +../servers/slapd/back-meta/.libs/back_meta-2.3.so.0: undefined symbol:
>> ldap_back_proxy_authz_ctrl
>
> Howard debugged this on IRC and it turns out that our (mine and
> _ranger_'s) libunixodbc has lt_dl* symbols in it. Relinking slapd
> without the unixodbc lib fixes it.
Yes, so there are two potential issues - the unixodbc shared library seems to
be statically linked with an older version of libltdl. I didn't run into this
problem on my build because I don't have that odbc library. Anyway, due to
the link order of the libraries, the lt_dlopen in this library gets used
before the linker resolves to the system's libltdl.so, and it seems that this
version of lt_dlopen doesn't automatically export the symbols of modules that
it loads.
I'm guessing the reason this is a problem in 2.3.33 and not in 2.3.32 is
because there is a new dependency in 2.3.33 between back-meta and back-ldap.
The other part of this is that the slapd binary should not be getting linked
against -lodbc when back_sql is built as a module.
Although, if back-sql is built statically, and other backends are dynamic,
this problem may still crop up. It seems that fixing -lodbc would be required
then.
--
-- Howard Chu
Chief Architect, Symas Corp. http://www.symas.com
Director, Highland Sun http://highlandsun.com/hyc
Chief Architect, OpenLDAP http://www.openldap.org/project/
From: ghenry
Date: 2007-05-04 00:20:24
> <email removed> wrote:
>> On Fri, Feb 02, 2007 at 04:03:43PM +0000, <email removed> wrote:
>>> ==> rewrite_context_apply [depth=1] string='(objectClass=*)'
>>> ==> rewrite_context_apply [depth=1] res={0,'NULL'}
>>> [rw] searchFilter: "(objectClass=*)" -> \
"(objectClass=*)"
>>> \
/home/andreas/updates-svn/openldap/BUILD/openldap-2.3.33/servers/slapd/.libs/lt- \
slapd:
>>> symbol lookup error:
>>> +../servers/slapd/back-meta/.libs/back_meta-2.3.so.0: undefined symbol:
>>> ldap_back_proxy_authz_ctrl
>>
>> Howard debugged this on IRC and it turns out that our (mine and
>> _ranger_'s) libunixodbc has lt_dl* symbols in it. Relinking slapd
>> without the unixodbc lib fixes it.
>
> Yes, so there are two potential issues - the unixodbc shared library seems
> to
> be statically linked with an older version of libltdl. I didn't run into
> this
> problem on my build because I don't have that odbc library. Anyway, due to
> the link order of the libraries, the lt_dlopen in this library gets used
> before the linker resolves to the system's libltdl.so, and it seems that
> this
> version of lt_dlopen doesn't automatically export the symbols of modules
> that
> it loads.
>
> I'm guessing the reason this is a problem in 2.3.33 and not in 2.3.32 is
> because there is a new dependency in 2.3.33 between back-meta and
> back-ldap.
>
> The other part of this is that the slapd binary should not be getting
> linked
> against -lodbc when back_sql is built as a module.
>
> Although, if back-sql is built statically, and other backends are dynamic,
> this problem may still crop up. It seems that fixing -lodbc would be
> required
> then.
I've hit this same problem tonight (no sql though):
./scripts/test030-relay: line 78: kill: (7779) - No such process
>>>>> ./scripts/test030-relay failed (exit 255)
make[2]: *** [bdb-mod] Error 255
make[2]: Leaving directory `/home/suretec/src/openldap-2.3.35/tests'
make[1]: *** [test] Error 2
make[1]: Leaving directory `/home/suretec/src/openldap-2.3.35/tests'
make: *** [test] Error 2
slapd.1.log:
/home/suretec/src/openldap-2.3.35/servers/slapd/.libs/lt-slapd: symbol
lookup error: ../servers/slapd/back-meta/.libs/back_meta-2.3.so.0:
undefined symbol: ldap_back_proxy_authz_ctrl
Config options were:
env CC=/usr/local/bin/gcc CPPFLAGS="-I/usr/local/ssl/include
-I/usr/local/BerkeleyDB.4.2/include -I/usr/local/include/sasl" \
LDFLAGS="-L/usr/local/ssl/lib -L/usr/local/BerkeleyDB.4.2/lib
-L/usr/local/lib/sasl2" \
LIBS="-ldl" \
LD_LIBRARY_PATH="/usr/local/ssl/lib /usr/local/BerkeleyDB.4.2/lib
/usr/local/lib/sasl2" ./configure \
--prefix=/usr/local --enable-slapd --enable-syslog \
--enable-dynamic --enable-rewrite --disable-sql --disable-ipv6
--disable-shell \
--with-threads --enable-modules --enable-backends=mod \
--enable-overlays=mod --with-tls --enable-wrappers
On Debian Sarge 3.1 with custom compiled:
openssl-0.9.8e
cyrus-sasl-2.1.22
db-4.2.52
heimdal-0.8.1
I can't get past it. Any debug advice?
Thanks.
--
Kind Regards,
Gavin Henry.
Managing Director.
T +44 (0) 1224 279484
M +44 (0) 7930 323266
F +44 (0) 1224 824887
E <email removed>
Open Source. Open Solutions(tm).
http://www.suretecsystems.com/