On Sat, 7 Apr 2012 12:38:30 GMT, h.b.furuseth(a)usit.uio.no wrote:
> Fixed in master, e6a25b2db6d7f4dc5d3370e06e3a3e03c5a6635d.
>
> Or at least, fixed some broken code in master. But I wonder
> why it usually worked before. Testing with sleep(1) before
> reading tid = *(int*)ptr in slapd_daemon_task() ought
> to fail (lets caller increment i first), but doesn't.
Aha, slapd_daemon() sets i=0 after starting the threads.
Reproduced the crash now by sleeping before setting i=0.
This ITS probably explains a bunch of other problems, in
that all 'slapd_daemon_task's usually have been running
with tid=0, even if there were more listeners.
assert(tid==0) in slapd_daemon_task does not crash when
starting slapd with multiple URLs, unless I sleep after
the loop which starts the threads.
--
Hallvard