[Date Prev][Date Next]
[Chronological]
[Thread]
[Top]
RE: ldappasswd hangs (server deadlock) (ITS#2122)
The code in back-bdb uses transactions to prevent deadlocks, and the
transaction ID is propagated through the op->o_private field of a particular
operation as it goes thru the various layers of functions. In this case,
LWP#5 shows something odd, the backend that started the transaction (arg#1 of
bdb_exop_passwd) is not the same backend that processes the backend_group
(arg#1) or bdb_group (arg#1) calls. Since the backends don't match, the
original transaction ID isn't used.
Are your two DNs located in two separate databases?
-- Howard Chu
Chief Architect, Symas Corp. Director, Highland Sun
http://www.symas.com http://highlandsun.com/hyc
Symas: Premier OpenSource Development and Support
> -----Original Message-----
> From: owner-openldap-bugs@OpenLDAP.org
> [mailto:owner-openldap-bugs@OpenLDAP.org]On Behalf Of
> matthias.loepfe@adnovum.ch
> Sent: Wednesday, October 02, 2002 2:40 PM
> To: openldap-its@OpenLDAP.org
> Subject: ldappasswd hangs (server deadlock) (ITS#2122)
>
>
> Full_Name: Matthias Loepfe
> Version: 2.1.5
> OS: Solaris 8
> URL:
> Submission from: (NULL) (193.192.235.7)
>
>
> I have freshly built an
> OpenLDAP-2.1.5/BDB-4.1.24/cyrus-sasl-2.1.7/OpenSSL-0.9.7-dev
> system on Solaris-8. If I run 'ldappasswd -x -W -S -D <dn1>
> <dn2>' the command
> hangs
> and the server is in a deadlock situation. Please find below
> a stacktrace of all
>
> threads and the last part of fulltrace output and a truss output.
>
>
> ----------- trace ------------------
> => acl_get: [1] matched
> => acl_get: [1] check attr userPassword
> <= acl_get: [1] acl cn=ra server,ou=technical
> users,dc=adnovum,dc=ch attr:
> userPassword
> => acl_mask: access to entry "cn=ra server,ou=technical
> users,dc=adnovum,dc=ch",
> attr "userPassword" requested
> => acl_mask: to all values by "cn=super user,ou=technical
> users,dc=adnovum,dc=ch", (=n)
> <= check a_dn_pat: anonymous
> => bdb_group: gr dn: "cn=directory admins,ou=admin
> groups,dc=adnovum,dc=ch"
> => bdb_group: op dn: "cn=super user,ou=technical
> users,dc=adnovum,dc=ch"
> => bdb_group: oc: "groupOfNames" at: "member"
> => bdb_group: tr dn: "cn=ra server,ou=technical
> users,dc=adnovum,dc=ch"
> bdb_dn2entry_rw("cn=directory admins,ou=admin
> groups,dc=adnovum,dc=ch")
> => bdb_dn2id( "cn=directory admins,ou=admin groups,dc=adnovum,dc=ch" )
> <= bdb_dn2id: got id=0x0000001d
> --------------------------------------
>
>
> -------------- truss -----------------
> pread64(12, "\0\0\003\08B 81E\0\0\0 '".., 4096, 159744) = 4096
> write(2, " < = b d b _ d n 2 i d".., 32) = 32
> write(2, " e n t r y _ d e c o d e".., 65) = 65
> write(2, " < = e n t r y _ d e c".., 66) = 66
> write(2, " b d b _ m o d i f y _ i".., 82) = 82
> write(2, " = > a c c e s s _ a l".., 111) = 111
> write(2, " = > d n : [ 1 ] o".., 47) = 47
> write(2, " = > a c l _ g e t : ".., 24) = 24
> write(2, " = > a c l _ g e t : ".., 40) = 40
> write(2, " < = a c l _ g e t : ".., 88) = 88
> write(2, " = > a c l _ m a s k :".., 111) = 111
> write(2, " = > a c l _ m a s k :".., 89) = 89
> write(2, " < = c h e c k a _ d".., 29) = 29
> write(2, " = > b d b _ g r o u p".., 76) = 76
> write(2, " = > b d b _ g r o u p".., 73) = 73
> write(2, " = > b d b _ g r o u p".., 46) = 46
> write(2, " = > b d b _ g r o u p".., 72) = 72
> write(2, " b d b _ d n 2 e n t r y".., 72) = 72
> write(2, " = > b d b _ d n 2 i d".., 71) = 71
> pread64(12, "\0\0\003\084 YE9\0\0\089".., 4096, 561152) = 4096
> write(2, " < = b d b _ d n 2 i d".., 32) = 32
> lwp_sema_wait(0xFE201E30) (sleeping...)
> signotifywait() (sleeping...)
> lwp_sema_wait(0xFE481E30) (sleeping...)
> lwp_sema_wait(0xFDD01E30) (sleeping...)
> lwp_cond_wait(0xFE785B20, 0xFE785B08, 0x00000000) (sleeping...)
> lwp_sema_wait(0xFDF81E30) (sleeping...)
> poll(0xFE701600, 6, -1) (sleeping...)
> door_return(0x00000000, 0, 0x00000000, 0) (sleeping...)
> --------------------------------------
>
> -------------- pstack ----------------
> ----------------- lwp# 1 / thread# 6 --------------------
> ff19c0c8 lwp_sema_wait (fe201e30)
> ff089af4 _park (fe201e30, ff0ae000, 0, fe201d70, 24d54,
> fe481d70) + 114
> ff0897bc _swtch (fe201d70, 0, ff0ae000, 5, 1000, 0) + 424
> ff08829c cond_wait (fe201d70, 0, 0, ff0ae000, 0, 4c2780) + 13c
> ff088140 pthread_cond_wait (4c2798, 4c2780, 0, 4c2780, 0, 0) + 8
> 001260d8 ldap_pvt_thread_cond_wait (4c2798, 4c2780, 0, 0, 0, 0) + 18
> 001258a8 ???????? (4c2778, ff063d10, 0, 5, 1, fe401000)
> ff09b730 _thread_start (4c2778, 0, 0, 0, 0, 0) + 40
> ----------------- lwp# 2 / thread# 2 --------------------
> ff19ba18 signotifywait ()
> ff08ed90 _dynamiclwps (ff0ae000, 59, 0, 0, ffbee99c, 4) + 1c
> ff09206c thr_yield (0, 0, 0, 0, 0, 0) + 8c
> ----------------- lwp# 3 / thread# 5 --------------------
> ff19c0c8 lwp_sema_wait (fe481e30)
> ff089af4 _park (fe481e30, ff0ae000, 0, fe481d70, 24d54,
> fdf81d70) + 114
> ff0897bc _swtch (fe481d70, 0, ff0ae000, 5, 1000, 0) + 424
> ff08829c cond_wait (fe481d70, 0, 0, ff0ae000, 0, 4c2780) + 13c
> ff088140 pthread_cond_wait (4c2798, 4c2780, 0, 4c2780, 0, 0) + 8
> 001260d8 ldap_pvt_thread_cond_wait (4c2798, 4c2780, 0, 0, 0, 0) + 18
> 001258a8 ???????? (4c2778, ff0b4748, 0, 5, 1, fe401000)
> ff09b730 _thread_start (4c2778, 0, 0, 0, 0, 0) + 40
> ----------------- lwp# 4 / thread# 8 --------------------
> ff19c0c8 lwp_sema_wait (fdd01e30)
> ff089af4 _park (fdd01e30, ff0ae000, 0, fdd01d70, 24d54,
> fe201d70) + 114
> ff0897bc _swtch (fdd01d70, 0, ff0ae000, 5, 1000, 0) + 424
> ff08829c cond_wait (fdd01d70, 0, 0, ff0ae000, 0, 4c2780) + 13c
> ff088140 pthread_cond_wait (4c2798, 4c2780, 0, 4c2780, 0, 0) + 8
> 001260d8 ldap_pvt_thread_cond_wait (4c2798, 4c2780, 0, 0, 0, 0) + 18
> 001258a8 ???????? (4c2778, fe735d10, 0, 5, 1, fe401000)
> ff09b730 _thread_start (4c2778, 0, 0, 0, 0, 0) + 40
> ----------------- lwp# 5 / thread# 9 --------------------
> ff19c07c lwp_cond_wait (fe785b20, fe785b08, 0)
> ff1935c0 _lwp_cond_wait (fe785b20, fe785b08, 0, 5f, 3, 53675c) + c
> 001c25e4 __db_pthread_mutex_lock (51e908, fe785b08, 1,
> fe785b20, 0, 1) + 9c
> 0019fcec ???????? (51ec00, 0, 0, 0, 1, 51ec00)
> 0019e740 __lock_vec (51e908, 2, 0, 0, 0, 0) + 16c
> 001e5e30 __db_lget (51f918, 2, 1, 1, 0, fda7faec) + 298
> 001c8118 __bam_search (51f918, 2, 1, 51f5e8, 5201d0, 0) + a50
> 00209204 ???????? (51f918, 184, fda7fd5c, 1e, fda7fbe4, 581)
> 00205ad4 ???????? (51f918, fda7fd5c, fda7fd44, 1e, fda7fc4c, 0)
> 001ddca4 __db_c_get (51f918, fda7fd5c, fda7fd44, 1e, 5201d0,
> 205460) + 44c
> 001d71b8 __db_get (51f2d8, 0, fda7fd5c, fda7fd44, 1e, 8000) + 178
> 00109ef0 bdb_id2entry_rw (4d40f0, 0, 1d, fda7fe84, 0, 800014a3) + 148
> 00104180 bdb_dn2entry_rw (4d40f0, 0, fda7ff94, fda7fe84, 0, 0) + 1a0
> 0010945c bdb_group (4d40f0, 524750, 6126c8, 536190,
> fda7ff94, 612718) + 514
> 000a18ac backend_group (108f48, 524750, 6126c8, 536190,
> fda7ff94, 612718) +
> 264
> 000b8330 ???????? (4da5e8, fda80dd8, 4d40f0, 524750, 6126c8, 536190)
> 000b5dc0 access_allowed (0, fda80470, 1, 536190, 4cd3f0, 0) + aa8
> 000b8f14 acl_check_modlist (4d40f0, 524750, 6126c8, 536190,
> fda818f0, 0) + 39c
> 000ef1e8 bdb_modify_internal (4d40f0, 524750, 6126c8,
> 612758, fda818f0, 536190)
> + d8
> 0010f298 bdb_exop_passwd (fda81948, 524750, 6126c8, 57c6f7,
> fda81c08, fda81bf0)
> + 970
> 001062d8 bdb_extended (fda81be8, fda81bf8, 10e928, 57c6f7,
> fda81c08, fda81bf0)
> + d0
> 000c395c passwd_extop (fda81be8, fda81bf8, 106208, fda81c08,
> fda81bf0,
> fda81bec) + 2cc
> 000c304c do_extended (fda81bf8, c3690, 0, 4c2780, 0, 0) + 6b4
> 0008a3ac ???????? (5432e0, 5227a0, 0, 0, 0, 0)
> 00125904 ???????? (4c2778, ff075d10, 0, 5, 1, fe401000)
> ff09b730 _thread_start (4c2778, 0, 0, 0, 0, 0) + 40
> ----------------- lwp# 6 / thread# 7 --------------------
> ff19c0c8 lwp_sema_wait (fdf81e30)
> ff089af4 _park (fdf81e30, ff0ae000, 0, fdf81d70, 24d54,
> fdd01d70) + 114
> ff0897bc _swtch (fdf81d70, 0, ff0ae000, 5, 1000, 0) + 424
> ff08829c cond_wait (fdf81d70, 0, 0, ff0ae000, 0, 4c2780) + 13c
> ff088140 pthread_cond_wait (4c2798, 4c2780, 0, 4c2780, 0, 0) + 8
> 001260d8 ldap_pvt_thread_cond_wait (4c2798, 4c2780, 0, 0, 0, 0) + 18
> 001258a8 ???????? (4c2778, ff075d10, 1, ff0bad94, 0, 2)
> ff09b730 _thread_start (4c2778, 0, 0, 0, 0, 0) + 40
> ----------------- lwp# 7 / thread# 4 --------------------
> ff19a254 poll (fe701600, 6, ffffffff)
> ff14cf8c select (e, 0, 0, fe701630, fe701be8, fe701600) + 348
> ff09b13c select (fe701742, ff0b4748, 0, 5, 1, fe401000) + 34
> ff09b730 _thread_start (0, 0, 0, 0, 0, 0) + 40
> ----------------- lwp# 8 --------------------------------
> ff1995bc door (0, 0, 0, 0, fe4e5d10, 4)
> ff096be0 _sc_door_func (0, 0, 0, 0, 0, 0) + 54
> -------------------------- thread# 1 --------------------
> ff08de50 _reap_wait_cancel (ff0aee18, ff0b5938, 80,
> ff0b5938, fe701d70, 1) +
> 40
> ff0900dc _thrp_join (ff0aee18, 4, 0, ff0ae000, 0, 4) + 344
> 00125ed8 ldap_pvt_thread_join (4, 0, 84b20, 0, ffbef240, 0) + 18
> 000870a4 slapd_daemon (0, 0, ff1bdec0, 4bc2b0, 0, 0) + dc
> 000819f0 main (d, ffbef01c, ffbef054, 480800, 0, 0) + cb8
> 00080ca8 _start (0, 0, 0, 0, 0, 0) + 108
> -------------------------- thread# 3 --------------------
> ff08ddf8 _reap_wait (ff0b29e8, 204e4, 0, ff0ae000, 0, 0) + 38
> ff08db50 _reaper (ff0aee38, ff0b4748, ff0b29e8, ff0aee10,
> 1, fe400000) + 38
> ff09b730 _thread_start (0, 0, 0, 0, 0, 0) + 40
> --------------------------------------
>
> Is it possible that I have built the system wrong?
>
> here are my configure statements I used:
>
> OpenLDAP: ./configure --prefix=/opt/openldap
> --sysconfdir=/var/spool/openldap/etc \
> --datadir='$$(prefix)/lib' --enable-crypt
> --without-kerberos \
> --enable-ldap --enable-dynamic --enable-modules
> --with-tls --with-cyrus-sasl
>
> SASL: ./configure --prefix=/opt/openldap \
> --with-des=$(spool_builddir) --disable-gssapi
> --disable-krb4 \
> --with-staticsasl --enable-static
> --disable-shared --with-dblib=none
>
> BDB: ../dist/configure --prefix=/opt/openldap
> --disable-shared
>
> thanks for any help
>
> with best regards
>
> Matthias Loepfe
>
>