ecore: correctly clean up in ecore_fork_reset
authorMarcel Hollerbach <mail@marcel-hollerbach.de>
Tue, 2 Apr 2019 12:50:54 +0000 (08:50 -0400)
committerWonki Kim <wonki_.kim@samsung.com>
Mon, 8 Apr 2019 01:45:22 +0000 (10:45 +0900)
commit1b4e92b6b006c5a73a4823a3ca8707c6f77c71d3
treefb9eb0ca1faad239f7cfa1868ce0a3b6fdb7bbf2
parent7535cb092f5f641ce632c330f94356843eb27911
ecore: correctly clean up in ecore_fork_reset

Summary:
after a fork does happen, the new process does not have any self created
threads at all. However, _thread_cb can contain suspend calls of
ecore_thread_main_loop_begin. _ecore_main_call_flush will then wait in
the suspend block for the thread to call ecore_thread_main_loop_end.
However, the thread is dead, the end function will never be called.
Hence we should ensure that we definitly kill every entry in _thread_cb
that has a susped flag on true.

This fixes deadlocks while running the testsuites with
EIO_MONITOR_POLL=1
Depends on D8526

Reviewers: cedric, segfaultxavi, zmike

Reviewed By: zmike

Subscribers: #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D8531
src/lib/ecore/ecore.c