I used the newest version, i.e., OpenLDAP-2.4.30, my OS is ubuntu 10.04, and the libltdl version is 2.2.6b-2ubuntu1.

I used the following configuration setting in my slapd.conf, trying to load a module.

moduleload /home/tianyin/openldap-2.4.30/module/mod_info.so

start slapd, and the log shows that:

Mar 24 22:06:49 tianyin-desktop slapd[7952]: lt_dlopenext failed: (/home/tianyin/openldap-2.4.30/module/mod_info.so) file not found

I'm sure that I used the correct path by ls the path (i'm not stupid)

# ll /home/tianyin/openldap-2.4.30/module/mod_info.so
-rwxr-xr-x 1 tianyin tianyin 194708 2012-03-24 21:05 /home/tianyin/openldap-2.4.30/module/mod_info.so*

use gdb to trace the code. I find the problem is caused by libltdl:

        if ((module->lib = lt_dlopenext(file)) == NULL) {
                error = lt_dlerror();
#ifdef HAVE_EBCDIC
                strcpy( ebuf, error );
                __etoa( ebuf );
                error = ebuf;
#endif
=>     Debug(LDAP_DEBUG_ANY, "lt_dlopenext failed: (%s) %s\n", file_name,
                        error, 0);

the call chain is as follows:

#0  module_load (file_name=0x91507b "/home/tianyin/openldap-2.4.30/module/mod_info.so", argc=0, argv=0x0) at module.c:190
#1  0x0000000000421284 in config_generic (c=0x915760) at bconfig.c:2021
#2  0x0000000000433a00 in config_set_vals (Conf=0x814a40, c=0x915760) at config.c:345
#3  0x0000000000433f5f in config_add_vals (Conf=0x814a40, c=0x915760) at config.c:418
#4  0x00000000004351b3 in read_config_file (fname=0x5a0a98 "/home/tianyin/openldap-2.4.30/etc/openldap/slapd.conf", depth=0, cf=0x0, cft=0x8140c0) at config.c:783
#5  0x000000000042846b in read_config (fname=0x0, dir=0x0) at bconfig.c:4213
#6  0x000000000041c217 in main (argc=1, argv=0x7fffffffe2f8) at main.c:792

error returned by lt_dlerror() is a misleading log message, which is really annoying. 

Thanks,
Tianyin


--
Tianyin XU,
http://cseweb.ucsd.edu/~tixu/