Bug 736712 - Modifying ruv entry deadlocks server
Summary: Modifying ruv entry deadlocks server
Alias: None
Product: 389
Classification: Retired
Component: Database - General
Version: 1.2.9
Hardware: All
OS: Linux
Target Milestone: ---
Assignee: Rich Megginson
QA Contact: Ben Levenson
Depends On:
Blocks: 690319 389_1.2.10
TreeView+ depends on / blocked
Reported: 2011-09-08 13:28 UTC by Rich Megginson
Modified: 2015-12-10 18:42 UTC (History)
6 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of: 590826
Last Closed: 2015-12-10 18:42:00 UTC

Attachments (Terms of Use)
0001-Bug-736712-Modifying-ruv-entry-deadlocks-server.patch (1.88 KB, patch)
2011-09-09 18:53 UTC, Rich Megginson
nkinder: review+
Details | Diff

Description Rich Megginson 2011-09-08 13:28:23 UTC
Another data point - attempting to use ldapmodify to fix the ruv deadlocks the server e.g.
ldapmodify -x -h localhost -p 1389 -D "cn=directory manager" -w password <<EOF
dn: nsuniqueid=ffffffff-ffffffff-ffffffff-ffffffff,dc=example,dc=com
changetype: modify
delete: nsds50ruv
nsds50ruv: {replica 3 ldap://localhost.localdomain:3389} 3e67cd37000000030000 3e67cd76000000030000

This causes a deadlock here:
#0  0x000000305280dfe4 in __lll_lock_wait () from /lib64/libpthread.so.0
#1  0x000000305280934e in _L_lock_995 () from /lib64/libpthread.so.0
#2  0x00000030528092b6 in pthread_mutex_lock () from /lib64/libpthread.so.0
#3  0x0000003061023bd9 in PR_Lock (lock=0x901d20)
    at ../../../mozilla/nsprpub/pr/src/pthreads/ptsynch.c:206
#4  0x00007f24b9f512a3 in cache_lock_entry (cache=0x96d308, e=0xae0ed0)
    at ../ds.git/ldap/servers/slapd/back-ldbm/cache.c:1444
#5  0x00007f24b9f664fa in find_entry_internal_uniqueid (pb=0xae69f0, 
    be=0x96b010, uniqueid=0xae1f00 "ffffffff-ffffffff-ffffffff-ffffffff", 
    lock=1, txn=0x0) at ../ds.git/ldap/servers/slapd/back-ldbm/findentry.c:228
#6  0x00007f24b9f66723 in find_entry_internal (pb=0xae69f0, be=0x96b010, 
    addr=0x7f24afcef900, lock=1, txn=0x0, really_internal=1)
    at ../ds.git/ldap/servers/slapd/back-ldbm/findentry.c:275
#7  0x00007f24b9f668d8 in find_entry2modify_only (pb=0xae69f0, be=0x96b010, 
    addr=0x7f24afcef900, txn=0x0)
    at ../ds.git/ldap/servers/slapd/back-ldbm/findentry.c:337
#8  0x00007f24b9fb217f in ldbm_txn_ruv_modify_context (pb=0xae69f0, 
    mc=0x7f24afcef980) at ../ds.git/ldap/servers/slapd/back-ldbm/misc.c:431
#9  0x00007f24b9f9e741 in ldbm_back_modify (pb=0xae69f0)
    at ../ds.git/ldap/servers/slapd/back-ldbm/ldbm_modify.c:390
#10 0x00007f24be0bd2e4 in op_shared_modify (pb=0xae69f0, pw_change=0, 
    old_pw=0x0) at ../ds.git/ldap/servers/slapd/modify.c:888
#11 0x00007f24be0bc06d in do_modify (pb=0xae69f0)
    at ../ds.git/ldap/servers/slapd/modify.c:384
#12 0x0000000000413f17 in connection_dispatch_operation (conn=0x7f24b06fd410, 
    op=0xac9200, pb=0xae69f0) at ../ds.git/ldap/servers/slapd/connection.c:583
#13 0x00000000004158e4 in connection_threadmain ()
    at ../ds.git/ldap/servers/slapd/connection.c:2328
#14 0x0000003061029633 in _pt_root (arg=0xadbf70)
    at ../../../mozilla/nsprpub/pr/src/pthreads/ptthread.c:187
#15 0x00000030528077e1 in start_thread () from /lib64/libpthread.so.0
#16 0x0000003051ce577d in clone () from /lib64/libc.so.6

The entry has already been locked for the modify, and ldbm_txn_ruv_modify_context attempts to lock it again.

This is due to the fix for Bug 543633

Comment 1 Rich Megginson 2011-09-09 18:53:34 UTC
Created attachment 522382 [details]

Comment 2 Rich Megginson 2011-09-09 19:45:30 UTC
To ssh://git.fedorahosted.org/git/389/ds.git
   6bac1a7..37a2a4d  master -> master
commit 37a2a4d4d823d2dc4211ef57165ad5daf42c63a0
Author: Rich Megginson <rmeggins>
Date:   Fri Sep 9 12:48:31 2011 -0600
    Reviewed by: nkinder (Thanks!)
    Branch: master
    Fix Description: Disallow modifying the RUV entry directly.  Server returns
    OPERATIONS_ERROR.  Error log says to use CLEANRUV task instead.
    Platforms tested: RHEL6 x86_64
    Flag Day: no
    Doc impact: no

Comment 5 Rich Megginson 2012-01-10 20:18:47 UTC
Upstream ticket:

Note You need to log in before you can comment on or make changes to this bug.