I think I have an idea what causes this bug. It is possible that the client
closes the connection before the server had a chance to run the cleanup
handler, the server sets op->o_abandon then (in connection_closing()). And
after that the cleanup handler is started, which in case of op->o_abandon
does not store the results in the cache.
To make this race more reproduceable it is sufficient to insert a
usleep(100) before the call to slap_cleanup_play() in send_ldap_response() in
result.c.
Any suggestions for possible ways to fix this?
On Dienstag, 23. Oktober 2007, rhafer(a)suse.de wrote:
> On Dienstag, 23. Oktober 2007, ando(a)sys-net.it wrote:
> > For the records: I seem to be ble to consistently reproduce the issue
> > when running slapd under valgrind;
>
> Thanks, that seems to do the trick for me as well.
>
> > I haven't seen it yet when running the test
> > regularly (single CPU i386, recently).
--
Ralf