cedric pushed a commit to branch master.

commit 681c8cda4c3ce6393f7d84efe6462810bf6bf1d7
Author: Jean-Philippe Andre <[email protected]>
Date:   Fri Jun 14 14:38:21 2013 +0900

    evas/cserve2: (shutdown) fix double free issue
    
    glibc double free happens when shutting down cserve, while
    requests are being processed. this is because the entry is
    being deleted from the hash but the cancel request fails
    (so it should be deleted again from the hash)
    
    Another patch going to fix the double free.
---
 src/bin/evas/evas_cserve2_cache.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/bin/evas/evas_cserve2_cache.c 
b/src/bin/evas/evas_cserve2_cache.c
index fb76c55..ed8f70c 100644
--- a/src/bin/evas/evas_cserve2_cache.c
+++ b/src/bin/evas/evas_cserve2_cache.c
@@ -403,7 +403,11 @@ _request_failed(Entry *e, Error_Type type EINA_UNUSED)
         else
           continue;
 
-        eina_hash_del_by_key(hash, &(ref->client_entry_id));
+        if (type != CSERVE2_REQUEST_CANCEL)
+          {
+             DBG("removing entry %u from hash", ref->client_entry_id);
+             eina_hash_del_by_key(hash, &(ref->client_entry_id));
+          }
      }
 }
 

-- 

------------------------------------------------------------------------------
This SF.net email is sponsored by Windows:

Build for Windows Store.

http://p.sf.net/sfu/windows-dev2dev

Reply via email to