Umh.
Why this?:

-        if (list != NULL && gwlist_delete_equal(list, conn) > 0) {
+        if (gwlist_delete_equal(list, conn) > 0) {

dict_get couldn't return null value from conn_pool and key?

M

On 10/25/06, Alexander Malysh <[EMAIL PROTECTED]> wrote:
Hi All,

attached patch fixes race condition in unregister/callback usage/destroy
of callback data.
The race is as follow, spotted with help of http.c:

        1 Thread                                2 Thread
1) http:conn_pool_get                   1) http:check_pool_conn
2)      conn = XYZ
3)      conn_unregister
                in conn_unregister
                destroy callbackdata
                                                2) dict_get(conn_pool, key) -> 
crash because connback data already
destroyed

@Vincent: you reported similar crash. This patch should fix it.

Votes please?

--
Thanks,
Alex



Reply via email to