Bug 444618
Summary: | id hangs when ldap used in nsswitch | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Product: | [Fedora] Fedora | Reporter: | John Hodrien <johnh> | ||||||||||||
Component: | nss_ldap | Assignee: | Nalin Dahyabhai <nalin> | ||||||||||||
Status: | CLOSED WONTFIX | QA Contact: | Fedora Extras Quality Assurance <extras-qa> | ||||||||||||
Severity: | medium | Docs Contact: | |||||||||||||
Priority: | low | ||||||||||||||
Version: | 9 | CC: | jsafrane, sputhenp, zing | ||||||||||||
Target Milestone: | --- | ||||||||||||||
Target Release: | --- | ||||||||||||||
Hardware: | x86_64 | ||||||||||||||
OS: | Linux | ||||||||||||||
Whiteboard: | |||||||||||||||
Fixed In Version: | Doc Type: | Bug Fix | |||||||||||||
Doc Text: | Story Points: | --- | |||||||||||||
Clone Of: | Environment: | ||||||||||||||
Last Closed: | 2009-07-14 16:03:59 UTC | Type: | --- | ||||||||||||
Regression: | --- | Mount Type: | --- | ||||||||||||
Documentation: | --- | CRM: | |||||||||||||
Verified Versions: | Category: | --- | |||||||||||||
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |||||||||||||
Cloudforms Team: | --- | Target Upstream Version: | |||||||||||||
Embargoed: | |||||||||||||||
Attachments: |
|
Description
John Hodrien
2008-04-29 15:29:02 UTC
Created attachment 304129 [details]
ldap.conf
Created attachment 304132 [details]
ldap.conf
Hmm, this doesn't appear to be nss_ldap as such. Building an nss_ldap on Fedora 7, and installing it on Fedora 9 works fine. Upping Fedora 7 to openldap-2.4.8 and building nss_ldap on that breaks in the same way. I've attached a stack trace of where it gets stuck. Created attachment 304253 [details]
stack trace
Adding Jan (the openldap package maintainer) to the CC: list. It's hard to guess what's wrong and I do not have AD to test with. Could you please try to add "debug -1" to your /etc/ldap.conf and attach result of "id user" ? It should produce lot of ldap logs, revealing your ldap database structure (no passwords). btw, use sorry for the last incomplete post... btw use "nss_page_results yes" instead of "true", but I doubt it makes any difference. Created attachment 304630 [details]
last few lines of id user
here are last few lines from log provided by email.
It looks like that ldap client waits for something, but all requests have been already successfully finished... OpenLDAP-2.4.x has brand new API for paged results, the bug is probably there. I need further assistance - could you please provide the same logs, but with the OpenLDAP distributed with Fedora 8 (i.e. openldap-2.3.39-3), just to compare the logs? And as simple test, try to run "ldapsearch -E pr=10/prompt <other params as needed>" against your AD - it should perform paged search. If it hangs at the end, the bug is in openldap for sure and we can forget the nss_ldap. Created attachment 304643 [details]
End of log using openldap-2.3.39-3.fc8.x86_64
Looks much the same on the F9 box. Cannot reproduce using ldapsearch as
described, merrily ticks along with no problems. On F7 with the new openldap
it works fine with an old nss_ldap but breaks with the F9 nss_ldap. I'm going
to have to find some time to look at this in depth.
Please try to analyze the ldap traffic with wireshark or so (or attach it here, beware of passwords!) - it seems to me that the AD sends wrong data to the nss_ldap. From the hexdumps you sent I can see the connection gets broken and nss_ldap rebinds quite often, but I do not see why (I'm not THAT good parsing ASN1 from hexdump :). Still, this does not explain why it hangs with paged results and works otherwise. Nalin: nss_ldap has implementation of paged control in pagectrl.c. This was necessary for openldap-2.3, but openldap-2.4 has its own (again in pagectrl.c). The configure script of nss_ldap detects that and uses the openldap's one - but the implementation is slightly different. Also the API is different - ldap_parse_page_control is declared deprecated and ldap_parse_pageresponse_control should be used instead. To me it seems that nss_ldap wrongly evaluates the search result and calls ldap_result when all results are already returned. That's my first guess what could be wrong. Could you please look at it? Or prepare a build, where you would log all results (and errno) from all ldap_* calls? It seems to me it's easier on nss_ldap side. I haven't reproduced the bug yet. I've found a local AD server, but it does not contain POSIX users/groups, only MS Windows ones and the mapping is not possible. Do you know of any? Changing version to '9' as part of upcoming Fedora 9 GA. More information and reason for this action is here: http://fedoraproject.org/wiki/BugZappers/HouseKeeping Adding some info received by mail from the reporter (next time please post everything to Bugzilla!): We locally patch our nss_ldap to do lookups on the RIDs instead, which removes the need for the Services for Unix attributes. But none of this has been done with that, so we're left with an incomplete POSIX mapping (as some gid entries are present and some are not). I also investigated tcpdump captures of LDAP communication between nss_ldap and AD and I don't see anything wrong - AD always returns proper results and all of them are in one "page" (i.e. <1000 results are always returned and paging was not used). I think the problem is not is ldap library. Nalin, could you please prepare nss_ldap where you would log all results (and errno) from all ldap_* calls and provide some additional logs when you process page control? I really think we should focus there. This message is a reminder that Fedora 9 is nearing its end of life. Approximately 30 (thirty) days from now Fedora will stop maintaining and issuing updates for Fedora 9. It is Fedora's policy to close all bug reports from releases that are no longer maintained. At that time this bug will be closed as WONTFIX if it remains open with a Fedora 'version' of '9'. Package Maintainer: If you wish for this bug to remain open because you plan to fix it in a currently maintained version, simply change the 'version' to a later Fedora version prior to Fedora 9's end of life. Bug Reporter: Thank you for reporting this issue and we are sorry that we may not be able to fix it before Fedora 9 is end of life. If you would still like to see this bug fixed and are able to reproduce it against a later version of Fedora please change the 'version' of this bug to the applicable version. If you are unable to change the version, please add a comment here and someone will do it for you. Although we aim to fix as many bugs as possible during every release's lifetime, sometimes those efforts are overtaken by events. Often a more recent Fedora release includes newer upstream software that fixes bugs or makes them obsolete. The process we are following is described here: http://fedoraproject.org/wiki/BugZappers/HouseKeeping Fedora 9 changed to end-of-life (EOL) status on 2009-07-10. Fedora 9 is no longer maintained, which means that it will not receive any further security or bug fix updates. As a result we are closing this bug. If you can reproduce this bug against a currently maintained version of Fedora please feel free to reopen this bug against that version. Thank you for reporting this bug and we are sorry it could not be fixed. bugzilla, please stop bugging me to provide info on a ticket that was closed over five years ago! |