[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
>
>