From 681c8cda4c3ce6393f7d84efe6462810bf6bf1d7 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Andre Date: Fri, 14 Jun 2013 14:38:21 +0900 Subject: [PATCH] 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 fb76c5577e..ed8f70c243 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)); + } } }