[Date Prev][Date Next]
[Chronological]
[Thread]
[Top]
2.0.1[15] hangs on Solaris 8 in test10-passwd.
Hi,
I'm running 2.0.15 with gdbm. I've seen what I believe is
the same problem running 2.0.11 as well. Slapd hangs in
the following test:
>>>>> Starting test010-passwd ...
running defines.sh . ldbm
Cleaning up in ./test-db...
Starting slapd on TCP/IP port 9009...
Using ldapsearch to check that slapd is running...
Waiting 5 seconds for slapd to start...
Using ldapadd to populate the database...
Using ldapsearch to verify population ...
Using ldappasswd (PASS 1) ...
Here's the truss output.
poll(0xFEE0B640, 3, -1) (sleeping...)
signotifywait() (sleeping...)
door_return(0x00000000, 0, 0x00000000, 0) (sleeping...)
open("/dev/random", O_RDONLY) (sleeping...)
lwp_cond_wait(0xFF0E55C8, 0xFF0E55D8, 0xFF083C48) (sleeping...)
lwp_cond_wait(0xFF0E55C8, 0xFF0E55D8, 0xFF083C48) Err#62 ETIME
time() = 1001613374
poll(0xFEE0B640, 3, -1) (sleeping...)
signotifywait() (sleeping...)
door_return(0x00000000, 0, 0x00000000, 0) (sleeping...)
open("/dev/random", O_RDONLY) (sleeping...)
lwp_cond_wait(0xFF0E55C8, 0xFF0E55D8, 0xFF083C48) (sleeping...)
And the pstack output.
10285: ../servers/slapd/slapd -f ./data/slapd-pw.conf -h
ldap://localhost:900
----------------- lwp# 1 / thread# 4 --------------------
ff19956c poll (fee0b640, 3, ffffffff)
ff14c798 select (9, 0, ff1bb1e4, fee0bbf4, fee0bc74, fee0b640) + 2cc
ff0cb470 select (fee0b74e, ff0e4798, 0, 5, 1, fe401000) + 34
ff0cbad0 _thread_start (0, 0, 0, 0, 0, 0) + 40
----------------- lwp# 2 / thread# 2 --------------------
ff19ad30 signotifywait ()
ff0be8e0 _dynamiclwps (ff0de000, 5c, 0, 0, 0, 0) + 1c
ff0c1b88 thr_yield (0, 0, 0, 0, 0, 0) + 8c
----------------- lwp# 3 --------------------------------
ff1988d4 door (0, 0, 0, 0, ff0a5d18, 4)
ff0ba474 _lwp_start (0, 0, 0, 0, 0, 0) + 18
----------------- lwp# 4 / thread# 5 --------------------
ff199448 open (f010c, 0, 0)
ff192714 _open (f010c, 0, 0, ff1b8018, 0, 0) + 1c
ff0caa98 open (fed097a8, 4, 0, 105a72, 107d16, 7d) + 34
0009ea0c hash_ssha1 (dc0e0, 114478, 109200, 7efefeff, 81010100, ff00) + 3c
0009d75c lutil_passwd_hash (114478, 105a6c, ff1b8018, 0, ff1bbcf8, fed088f8) + 8c
0005b6a8 slap_passwd_hash (114478, 4, efc14, 107cc8, 0, 0) + 70
000951e4 ldbm_back_exop_passwd (128938, 1292e0, 114bd8, 110f28, 1144f8, fed09c10) + 314
00089958 ldbm_back_extended (fed09c08, fed09c18, 94ed0, 110f28, 1144f8, fed09c10) + f0
0005a8d4 passwd_extop (fed09c08, fed09c18, 89868, 1144f8, fed09c10, fed09c0c) + 2c4
0005a0ec do_extended (fed09c18, 5a610, 10c478, ff1b8018, 0, 79fb0) + 764
00024340 connection_operation (114328, 0, 0, 0, 0, 0) + 368
000a69fc ldap_int_thread_pool_wrapper (10c470, ff093d18, 1, ff0eae04, 0, 2) + 19c
ff0cbad0 _thread_start (10c470, 0, 0, 0, 0, 0) + 40
----------------- lwp# 5 --------------------------------
ff19b314 lwp_cond_wait (ff0e55c8, ff0e55d8, ff083c48)
ff192cb0 _lwp_cond_timedwait (0, 3bb36a96, ff083cb0, ff0e55c8, ff0e55d8, 0) + 98
ff0b8e24 _age (ff0dedc0, ff0dedc4, ff0de000, 3, ff0de000, 1) + 94
ff0ba474 _lwp_start (ff083d78, 0, 4000, ff00fc34, 0, 0) + 18
ff0c1b88 thr_yield (0, 0, 0, 0, 0, 0) + 8c
-------------------------- thread# 1 --------------------
ff0bd9a0 _reap_wait_cancel (ff0dee38, ff0de000, 80, ff0e59a8, fee0bd78, 1) + 40
ff0bfc00 _thrp_join (ff0dee38, 4, 0, ff0de000, 0, 4) + 344
000a6eec ldap_pvt_thread_join (4, 0, 1dbd8, 0, ffbef020, dc74d) + 1c
0002067c slapd_daemon (0, 0, ff1bbe18, 109268, 0, 0) + 10c
0001a81c main (7, ffbeee3c, ffbeee5c, 104000, 0, 0) + bf4
00019b94 _start (0, 0, 0, 0, 0, 0) + dc
-------------------------- thread# 3 --------------------
ff0bd948 _reap_wait (ff0e2a30, 20994, 0, ff0de000, 0, 0) + 38
ff0bd6a0 _reaper (ff0dee58, ff0e4798, ff0e2a30, ff0dee30, 1, fe400000) + 38
ff0cbad0 _thread_start (0, 0, 0, 0, 0, 0) + 40
I don't know what's preventing slapd from continuing. It could
be blocking while opening /dev/random, but it could also be blocking
in lwp_cond_wait (viz., pthread_cond_wait). If the latter is the case,
I believe the problem is in libraries/libldap_r/tpool.c, either:
369 if (pool->ltp_state == LDAP_INT_THREAD_POOL_RUNNING)
370 ldap_pvt_thread_cond_wait(&pool->ltp_cond, &pool->ltp_mutex);
or
379 (ctx->ltc_start_routine)(ctx->ltc_arg);
Has anyone seen this before? Might it be a bug in the version
of libpthread.so on this Solaris machine?
Regards,
Nicholas Dronen: