eio: limit race condition during shutdown.
authorCedric BAIL <cedric@osg.samsung.com>
Wed, 19 Aug 2015 18:21:02 +0000 (20:21 +0200)
committerCedric BAIL <cedric@osg.samsung.com>
Wed, 19 Aug 2015 18:22:57 +0000 (20:22 +0200)
src/lib/eio/eio_monitor_poll.c

index 0e222f5..cb9daf9 100644 (file)
@@ -329,17 +329,20 @@ eio_monitor_fallback_del(Eio_Monitor *monitor)
 
    if (!backend) return;
 
-   backend->parent = NULL;
+   if (backend->work) ecore_thread_cancel(backend->work);
+
    if (backend->timer) ecore_timer_del(backend->timer);
    backend->timer = NULL;
    if (backend->idler) ecore_idler_del(backend->idler);
    backend->idler = NULL;
-   if (backend->work)
+
+   if (backend->work && !ecore_thread_wait(backend->work, 0.3))
      {
         backend->delete_me = EINA_TRUE;
-        ecore_thread_cancel(backend->work);
         return;
      }
+
+   backend->parent = NULL;
    eina_hash_free(backend->children);
    free(backend);
 }