Aaron Richton wrote:
Different assertion.
Current function is ldap_pvt_runqueue_resched
current thread: t@7
[1] __lwp_kill(0x0, 0x6, 0x0, 0xff33c000, 0x0, 0x0), at 0xff31feb0
[2] raise(0x6, 0x0, 0xfbbff5d8, 0x0, 0x0, 0x0), at 0xff2d0b28
[3] abort(0x32, 0xfbbff668, 0x32, 0x7efefeff, 0x81010100, 0xff00), at 0xff2b6e70
[4] __assert(0xff1e7c00, 0xff1e7c0c, 0xa5, 0x2b2368, 0x4, 0x0), at 0xff2b7110
=>[5] ldap_pvt_runqueue_resched(rq = 0x39f298, entry = 0x501c80, defer = 1), line 165
in "rq.c"
[6] do_syncrepl(ctx = 0xfbbffe0c, arg = 0x501c80), line 1424 in
"syncrepl.c"
[7] ldap_int_thread_pool_wrapper(xpool = 0x3eb0c0), line 663 in "tpool.c"
rq.c:165 assert ( e == entry );
Interesting. This assert is because it tried to reschedule a task that wasn't
already on the task list. And the *si info in your other email indicates that
this consumer's task pointer should have been (si->si_re), which is a
completely different value. Of course, this code only ever gets triggered one
of two ways - directly by the runqueue, or as a connection_client callback
setup by a task that was running on the runqueue. Since this is a
refreshAndPersist consumer, it's most likely running due to connection activity.
The *si pointer comes out of the rtask pointer. There's no way for the *si
data to be valid while the rtask is invalid. (And *si is definitely valid.)
And there's no way for the rtask to be valid without existing on the runqueue.
Very strange.
print si
print *si->si_re
Also strange is that entry->routine is nil; the runqueue could not have
invoked the do_syncrepl function without a value here. And the tname is empty,
when it should be "do_syncrepl". Yet entry->tspec is valid.
Seems like a race with syncinfo_free()...
(dbx) print e
e = (nil)
(dbx) print *entry
*entry = {
next_sched = {
tv_sec = 0
tv_usec = 0
}
interval = {
tv_sec = 60
tv_usec = 0
}
tnext = {
stqe_next = 0x448c70
}
rnext = {
stqe_next = (nil)
}
routine = (nil)
arg = 0x4483b8
tname = 0x501c78 ""
tspec = 0x4483cc "rid=004"
}
backtrace and testrun:
https://www.nbcs.rutgers.edu/~richton/testfailed.200906101238.tgz
--
-- Howard Chu
CTO, Symas Corp.
http://www.symas.com
Director, Highland Sun
http://highlandsun.com/hyc/
Chief Architect, OpenLDAP
http://www.openldap.org/project/