On Wed, 30 Apr 2008, hyc@symas.com wrote:
rein@OpenLDAP.org wrote:
We have seen a case where "assert(SLAP_SOCK_IS_ACTIVE(s))" in slapd_clr_write() failed, see the stack trace at the end. The last log message (at loglevel stat) related to the socket was "fd=657 closed (connection lost on write)". The comment where slapd_daemon_task() calls connection_write() makes me believe that slapd_clr_write() should not have use assert here. Remove it or include it as a condition in the following if statement?
How frequently can you reproduce this? I'm tempted to say move the assert into the if (SLAP_SOCK_IS_WRITE()) block, and see if it still triggers.
This is the only occurrence I have found of this abort, so it is not very reproduce able :-( But the core shows that SLAP_SOCK_IS_WRITE would be false (as would SLAP_SOCK_IS_READ), so moving the assert into the if block should fix this case. And asserting a writeable socket is also active makes sence to me.
Rein