Hi, I think this is just wrong.
It evas_thread_exited is True, it does not mean that the thread is actually finished. eina_thread_join() should be called **unconditionally** in this case. It is specified that if the thread is terminated, then pthread_join() (eina_thread's backend) will return immediately. BR Jean On Tue, Sep 5, 2017 at 2:16 PM, Marcel Hollerbach < [email protected]> wrote: > bu5hm4n pushed a commit to branch master. > > http://git.enlightenment.org/core/efl.git/commit/?id= > e41d46c635bdf769d4b93da609883347168c719a > > commit e41d46c635bdf769d4b93da609883347168c719a > Author: Marcel Hollerbach <[email protected]> > Date: Mon Sep 4 19:44:03 2017 +0200 > > evas_thread: only join the thread if the thread is still alive > > otherwise we might join a invalid thread id, that could lead to a > deadlock. Lets not do that. > > ref T5245 > > @fix > --- > src/lib/evas/common/evas_thread_render.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/src/lib/evas/common/evas_thread_render.c > b/src/lib/evas/common/evas_thread_render.c > index bbde81a657..62f0ba1577 100644 > --- a/src/lib/evas/common/evas_thread_render.c > +++ b/src/lib/evas/common/evas_thread_render.c > @@ -260,8 +260,8 @@ evas_thread_shutdown(void) > goto timeout_shutdown; > } > } > - > - eina_thread_join(evas_thread_worker); > + if (!evas_thread_exited) > + eina_thread_join(evas_thread_worker); > timeout_shutdown: > eina_lock_free(&evas_thread_queue_lock); > eina_condition_free(&evas_thread_queue_condition); > > -- > > > ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ enlightenment-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
