[Date Prev][Date Next] [Chronological] [Thread] [Top]

(ITS#4184) Lockup when moding one particular entry



Full_Name: David Engeset
Version: 2.3.11
OS: RedHat WS 4.0
URL: http://ww2.whidbey.net/davidke/openldap.html
Submission from: (NULL) (209.166.64.106)


I have followed the suggestions of the support list and used the latest stable
version of OpenLDAP 2.3.11 and BDB 4.2.52 w/patches. I then tried various
combinations of the latest Berkeley DB and OpenLDAP. In all cases, the problem
persists. After hours of debugging I was able to isolate the issue to a
reproducable event with a very small database and even determined the line of
code that is hanging. The error seems to ocurr in BDB but I was unable to trace
it further after several attempts. While it appears to be hanging on a lock, I
am unable to determine what data is being locked but never unlocked.

I have put up on my website the slapd.conf and the two ldifs for each database
that I used for anyone who wants to independently verify this problem.
http://ww2.whidbey.net/davidke/openldap.html
The file and line of code that it will hang on is:
file: servers/slapd/back-bdb/cache.c
function: bdb_cache_entry_db_relock
line: 100, line shown below
rc = env->lock_vec(env, locker, tryOnly ? DB_LOCK_NOWAIT : 0, list, 2,
NULL );

Here is a summary of the problem:

I have two separate databases. The first one has a suffix of
ou=disconnected,dc=example,dc=com and the second has a suffix of
dc=example,dc=com.

When I perform an add/modify/delete to the disconnected database
(ou=disconnected,dc=example,dc=com) and then try to edit a group that is given
explicit permissions to access that disconnected database, the system hangs.

For example, let's say I add an entry to or remove an entry from the
disconnected database. Then I want to add, modify or delete a member of the
techgroup group. When I try to do that, the system hangs. Below are two access
lists that I have tried in slapd.conf to permit full access by members of the
techgroup:

"access to dn.subtree="ou=disconnected,dc=example,dc=com"
by self write
by dn="cn=Admin,dc=whidbey,dc=net" write
by group="cn=techgroup,ou=structures,dc=example,dc=com" write
by * read"

and

"access to *
by self write
by dn="cn=Admin,dc=example,dc=com" write
by group="cn=techgroup,ou=structures,dc=example,dc=com" write
by * read"

Either of these result in the same problem. It doesn't matter if it has read or
write access the process will hang on the edit to the techgroup. If I were to
make a change to the disconnected database and then stop slapd and restart it
and make a change to the techgroup there is no
problem.

Thank you