The customer attempted to configure a Solaris 10 system as an ldap(1) client
by running the command
# ldapclient -v init -a profileName=default -a domainName=test.com 192.1.2.3
Since this IP-address 192.1.2.3 does not exist in his environment, the ldapclient
command fell into an endless loop.
reason:
At some point the function libsldap:search_state_machine() is called and this
function calls ldap_search_ext(). Then the function ldap_search_ext() waits for
30 seconds (connection timeout) and returns the error-code 91 (LDAP_CONNECT_ERROR).
The function libsldap:search_state_machine() doesn't correctly exit from a switch case routine, after ldap_search_ext() has returned this error code.
This problem can be recreated on demand.
You may see ldap_search_ext() returning the error-code 91 and becoming called all time when running the following truss on a ldapclient command:
# truss -eflda -rall -wall -vall -u libsldap,libldap ldapclient -v init -a profileName=default -a domainName=test.com 1.2.3.4
You may see this is a recursive loop in search_state_machine(), when running
the following dtrace on a ldapclient command:
# dtrace -n 'pid$target:libsldap.so::entry' -n 'pid$target:libldap.so::entry' -n 'pid$target:libsldap.so::return' -n 'pid$target:libldap.so::return' -c "ldapclient -v init -a profileName=default -a domainName=test.com 192.1.2.3" -o /tmp/dtrace.out
xxxxx@xxxxx.com 2005-05-23 15:00:30 GMT