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