> -----Original Message-----
> From: 
> [email protected]
>  
> [mailto:[email protected]
> illa.org] On Behalf Of [email protected]
> Sent: Thursday, April 30, 2009 8:34 AM
> To: [email protected]
> Subject: Crash in ldap_unbind()
> 
> We are using Mozilla 6.0.5 C SDK. When the LDAP server has a 
> short timeout (10 seconds) for the connections, we are 
> experiencing consistent crash after calling ldap_unbind(). 
> Our investigation shows that the crash is caused by the use 
> of freed memory. There are multiple references to the same 
> memory. After one is used to free the memory, others are 
> still used to access that memory.
> 
> Here is how the multiple references to the same memory are created.
> When the connection is dropped by LDAP server, we call
> ldap_simple_bind_s() to reconnect. This ultimately calls into 
> nsldapi_new_connection(), which has the following code:
> 
>       lc->lconn_next = ld->ld_conns;
>       ld->ld_conns = lc;
> 
> This adds a new connection to the LDAP handle which already 
> has a connection. The problem is that both of these two 
> connections reference the same memory through their 
> respective lbextiofn_socket_arg field.

When the connection is dropped by LDAP server, have you called ldap_unbind() to 
destroy the handler? And, since you call ldap_simple_bind_s() to do the 
binding, you'd better call ldap_unbind_s() to release the handle, instead of 
ldap_unbind().
 
> Later on,we call ldap_unbind() on the LDAP handle. Down the stack,
> ldap_ld_free() has the following code:
> 
>               while ( ld->ld_conns != NULL ) {
>                       nsldapi_free_connection( ld, 
> ld->ld_conns, serverctrls,
>                           clientctrls, 1, close );
>               }
> 
> Ldap_ld_free() is trying to free each connection on the LDAP handle.
> The first iteration frees the memory pointed by 
> lbextiofn_socket_arg, the second iteration tries to use it in 
> nsldapi_close_connection() and causes crash.
> 
> Hopefully I explained clearly the cause of the problem. 
> Please advise how this problem can be fixed.
> 
> Thanks,
> Yang
_______________________________________________
dev-tech-ldap mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-tech-ldap

Reply via email to