Massimo Meregalli wrote:
The following is the backtrace produced when I attach the debugger to the radiusd process:
(gdb) backtrace #0 0x0012d402 in __kernel_vsyscall () #1 0x00166a0e in __lll_mutex_lock_wait () from /lib/libpthread.so.0 #2 0x00162883 in _L_mutex_lock_79 () from /lib/libpthread.so.0 #3 0x001623ad in pthread_mutex_lock () from /lib/libpthread.so.0 #4 0x00704e6d in ldap_pvt_thread_mutex_lock () from /usr/lib/libldap_r-2.3.so.0
Pretty much what I expected. The LDAP code is blocking on a mutex. Why, I don't know.
#5 0x0070f79b in ldap_ld_free () from /usr/lib/libldap_r-2.3.so.0 #6 0x00663dd7 in ?? () from /usr/lib/libnss_ldap.so.2 #7 0x00667504 in ?? () from /usr/lib/libnss_ldap.so.2
libnss_ldap? Huh? Where did that come from? Are you trying to get passwords via the "unix" module, over NSS, using LDAP? I suggest commenting out the "unix" module from radiusd.conf. The issue MAY be conflicting use of static variables in the OpenLDAP libraries. i.e. The OpenLDAP libraries can connect to *one* LDAP server. Not two, *one*. So if you use rlm_ldap, you *cannot* lookup usernames and passwords in LDAP, via NSS. The OpenLDAP libraries will break... possibly exactly like this. Alan DeKok.