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@suse.de wrote:
On Dienstag, 23. Oktober 2007, ando@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).