It kooks that ldap_sasl_interactive_bind_s() does not like to be interupted by a signal. Chances are that we receive a signal from an exiting child during it's execution.
After some investigation I think it is the call to poll() that fails.
Strace of a successful connection:
connect(23, {sa_family=AF_INET, sin_port=htons(389), sin_addr=inet_addr("192.168.101.30")}, 16) = -1 EINPROGRESS (Operation now in progress) poll([{fd=23, events=POLLOUT|POLLERR|POLLHUP}], 1, 6000) = 1 ([{fd=23, revents=POLLOUT}]) getpeername(23, {sa_family=AF_INET, sin_port=htons(389), sin_addr=inet_addr("192.168.101.30")}, [16]) = 0
Strace of a failed connect:
connect(23, {sa_family=AF_INET, sin_port=htons(389), sin_addr=inet_addr("192.168.101.30")}, 16) = -1 EINPROGRESS (Operation now in progress) poll([{fd=23, events=POLLOUT|POLLERR|POLLHUP}], 1, 6000) = ? ERESTART_RESTARTBLOCK (To be restarted) --- SIGCHLD (Child exited) @ 0 (0) --- write(14, "\0", 1) = 1 rt_sigreturn(0xbfbd2b7c) = -1 EINTR (Interrupted system call) shutdown(23, 2 /* send and receive */) = 0 close(23) = 0
After reading the related openLDAP source code I found that we may want to set LDAP_OPT_RESTART.
Strace with LDAP_OPT_RESTART set:
connect(23, {sa_family=AF_INET, sin_port=htons(389), sin_addr=inet_addr("192.168.101.30")}, 16) = -1 EINPROGRESS (Operation now in progress) poll([{fd=23, events=POLLOUT|POLLERR|POLLHUP}], 1, 6000) = ? ERESTART_RESTARTBLOCK (To be restarted) --- SIGCHLD (Child exited) @ 0 (0) --- write(14, "\0", 1) = 1 rt_sigreturn(0xbfc71b8c) = -1 EINTR (Interrupted system call) poll([{fd=23, events=POLLOUT|POLLERR|POLLHUP}], 1, 6000) = 1 ([{fd=23, revents=POLLOUT}]) getpeername(23, {sa_family=AF_INET, sin_port=htons(389), sin_addr=inet_addr("192.168.101.30")}, [16]) = 0
Fields changed
milestone: NEEDS_TRIAGE => SSSD 1.1.1
Fixed by 6e8f828c84334c43500311ddcdb4341d87cdd71f
fixedin: => 1.1.1 resolution: => fixed status: new => closed
rhbz: => 0
Metadata Update from @sbose: - Issue assigned to sbose - Issue set to the milestone: SSSD 1.1.1
SSSD is moving from Pagure to Github. This means that new issues and pull requests will be accepted only in SSSD's github repository.
This issue has been cloned to Github and is available here: - https://github.com/SSSD/sssd/issues/1473
If you want to receive further updates on the issue, please navigate to the github issue and click on subscribe button.
subscribe
Thank you for understanding. We apologize for all inconvenience.