From 5e903d1ba19625ce445e7176c1a1a8bc0d597729 Mon Sep 17 00:00:00 2001 From: urmain Date: Wed, 13 Nov 2024 11:38:23 +0900 Subject: [PATCH] Wait for terminating sub thread when vc client is deinitialized Casuse: The crash was happened when application had called vc_deinitialize() function because g_prepare_thread had been alived. Change-Id: I7e171f01bff1152097918b70d1564b25923e20b7 Solution: Wait for terminating g_prepare thread after cancelling. --- client/vc.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/client/vc.c b/client/vc.c index 39bd7aa..7530069 100644 --- a/client/vc.c +++ b/client/vc.c @@ -489,8 +489,12 @@ int vc_deinitialize(void) /* no break. need to next step*/ case VC_STATE_INITIALIZED: pthread_mutex_lock(&g_prepare_thread_mutex); - if (NULL != g_prepare_thread) { + if (NULL != g_prepare_thread && EINA_FALSE == ecore_thread_check(g_prepare_thread)) { + SLOG(LOG_INFO, TAG_VCC, "[INFO] Cancel prepare thread"); ecore_thread_cancel(g_prepare_thread); + + ecore_thread_wait(g_prepare_thread, 1.0); // wait g_prepare_thread is terminated. + g_prepare_thread = NULL; } pthread_mutex_unlock(&g_prepare_thread_mutex); -- 2.34.1