Call destroyInstance after workers have exited

Router and filter instances cannot be destroyed before all worker
threads have exited. Otherwise there is a risk that data gets deleted
while someone might still be accessing it. Further, since all router
and filter instances are created by the main-thread it is better that
they are deleted by that thread as well (and not by whichever thread
happens to execute service_shutdown()). That will reduce the risk that
some unknown assumptions are violated.
This commit is contained in:
Johan Wikman
2016-12-08 16:28:28 +02:00
parent aa4ed2d28d
commit 12f0886ca2
3 changed files with 29 additions and 3 deletions

View File

@ -2044,6 +2044,12 @@ int main(int argc, char **argv)
{
thread_wait(threads[thread_id]);
}
/*<
* Destroy the router and filter instances of all services.
*/
service_destroy_instances();
/*<
* Wait the flush thread.
*/