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

Re: ldappasswd hangs (server deadlock) (ITS#2122)



Howard Chu wrote:
> 
> 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?

No I only use one database.  The two DN's are as follows:

cn=super user,ou=technical users,dc=adnovum,dc=ch
cn=ra server,ou=technical users,dc=adnovum,dc=ch

Here my config file:

------------- slapd.conf -------------
include /etc/core.schema
...
sasl-realm    adnovum.ch
...
database	bdb
suffix		"dc=adnovum,dc=ch"
directory	/db
index	objectClass	      pres,eq
...
--------------------------------------

Is it possible that it has something to do with the fact, that I
configured sasl without a own db. As much as I know, in the given
scenario, sasl is not involved.

regards

Matthias

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

-- 
+---------------------------------------------------------------------+
 Matthias Loepfe                     mailto:matthias.loepfe@adnovum.ch
 CIO                                                 dipl. El.-Ing. FH

 AdNovum Informatik AG http://www.adnovum.ch  phone: +41 (0)1 272 6111
 Roentgenstrasse 22, CH-8005 Zuerich          fax:   +41 (0)1 272 6312
+---------------------------------------------------------------------+
 AdNovum Software Inc. San Mateo, CA 94404    phone: +1 (650) 525 9322
 1400 Fashion Island Boulevard, Suite 309     fax:   +1 (650) 525 9324
+---------------------------------------------------------------------+