From: urmain Date: Wed, 13 Nov 2024 02:38:23 +0000 (+0900) Subject: Wait for terminating sub thread when vc client is deinitialized X-Git-Tag: accepted/tizen/9.0/unified/20241114.140803^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e527484b533aeea09b3a0f33d702c753a050303b;p=platform%2Fcore%2Fuifw%2Fvoice-control.git 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. (cherry picked from commit 5e903d1ba19625ce445e7176c1a1a8bc0d597729) --- 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);