[Date Prev][Date Next]
[Chronological]
[Thread]
[Top]
Re: syncrepl consumer locks up (ITS#3263)
On Tuesday 03 August 2004 15:49, Jong-Hyuk wrote:
> Thanks for the info. This level of detail is really helping in locating the
> problem.
> Looks like another interaction with the group ACL. It segfaulted while it
> tried to read the group entry.
> I can't tell how far bdb_entry_get proceeded before he died, though. Can
> you locate wehre it faulted within bdb_entry_get ?
> - Jong-Hyuk
>
I had to compile a slapd with debug symbols first. Here it is:
(dbx) where -v
current thread: t@5
=>[1] bdb_entry_get(op = 0xf9bffb0c, ndn = 0xf9bff1b4, oc = 0x4ad710, at =
0x4c9948, rw = 0, ent = 0xf9bfed30), line 268 in "id2entry.c"
[2] be_entry_get_rw(op = 0xf9bffb0c, ndn = 0xf9bff1b4, oc = 0x4ad710, at =
0x4c9948, rw = 0, e = 0xf9bfed30), line 1245 in "backend.c"
[3] backend_group(op = 0xf9bffb0c, target = 0x6cb670, gr_ndn = 0xf9bff1b4,
op_ndn = 0xf9bffc0c, group_oc = 0x4ad710, group_at = 0x4c9948), line 1288 in
"backend.c"
[4] acl_mask(a = 0x486c48, mask = 0xf9bff5c8, op = 0xf9bffb0c, e = 0x6cb670,
desc = 0x479fe0, val = (nil), matches = 0xf9bff2a0, count = 22, state =
0xf9bff66c), line 1244 in "acl.c"
[5] access_allowed(op = 0xf9bffb0c, e = 0x6cb670, desc = 0x479fe0, val =
(nil), access = ACL_AUTH, state = 0xf9bff66c), line 366 in "acl.c"
[6] backend_attribute(op = 0xf9bffb0c, target = (nil), edn = 0xf9bffb34,
entry_at = 0x479fe0, vals = 0xf9bffa40), line 1438 in "backend.c"
[7] do_syncrep1(op = 0xf9bffb0c, si = 0x4887a8), line 400 in "syncrepl.c"
[8] do_syncrepl(ctx = 0xf9bffe20, arg = 0x4e7ee8), line 854 in "syncrepl.c"
[9] ldap_int_thread_pool_wrapper(0x467568, 0xf9bffe20, 0x5, 0x47fb48, 0x28,
0x47fb50), at 0x18c6ec
(dbx) dump
bdb = 0x4884b8
lock = RECORD
ei = 0xfe8b0018
rc = -92402991
free_lock_id = 0
locker = 0
txn = (nil)
op = 0xf9bffb0c
at = 0x4c9948
ent = 0xf9bfed30
oc = 0x4ad710
rw = 0
ndn = 0xf9bff1b4
at_name = 0x4aaa78 "member"
e = (nil)
boi = 0x5c7534
It looks like boi->boi_bdb is "nil" which leads to the crash:
(dbx) print *boi
*boi = {
boi_bdb = (nil)
boi_txn = (nil)
boi_lock = {
off = 294024U
ndx = 32U
gen = 65407U
mode = DB_LOCK_READ
}
boi_err = 0
boi_locker = 0
boi_acl_cache = 0
}
Karsten.
--
Death is only a state of mind.
Only it doesn't leave you much time to think about anything else.