On Sat, 7 Apr 2012 12:38:30 GMT, h.b.furuseth@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.