From: saerome.kim Date: Thu, 1 Feb 2018 04:14:31 +0000 (+0900) Subject: mot-agent: replace nonosleep with usleep to prevent crash X-Git-Tag: submit/tizen/20190131.065036~128 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c1a4bb8528a367f08fb5a4ba4aef2dbe1e4e55a7;p=platform%2Fcore%2Fapi%2Fmulti-device-group.git mot-agent: replace nonosleep with usleep to prevent crash Signed-off-by: saerome.kim --- diff --git a/src/mot-agent/ma-subowner.c b/src/mot-agent/ma-subowner.c index 9f30dd2..18550c8 100644 --- a/src/mot-agent/ma-subowner.c +++ b/src/mot-agent/ma-subowner.c @@ -435,14 +435,14 @@ int _init_proc(PROC *proc, void *(*routine) (void *)) { return MA_ERROR_NONE; } #endif -static int _wait_cb_ret(unsigned int msec) +static int _wait_cb_ret(int msec) { OCStackResult ret = OC_STACK_OK; - unsigned int i, times = msec /100; + #ifndef THREAD_COND_WAIT_USED struct timespec request, remaining; - request.tv_sec = 0; - request.tv_nsec = 1000000; + request.tv_sec = msec / 1000; + request.tv_nsec = (msec % 1000) * 1000000; #endif ma_check_null_ret_error("g_client", g_client, OC_STACK_INVALID_PARAM); @@ -460,13 +460,12 @@ static int _wait_cb_ret(unsigned int msec) pthread_join(proc_a.thread, (void*) &result_a); #else - for (i = 0; !g_client->g_doneCB && times > i; ++i) { - - ret = nanosleep(&request, &remaining); - if (-1 == ret && EINTR == errno) { - MA_LOGE( "Onanosleep error = %d", errno); - break; - } + for (int i=0; !g_client->g_doneCB && msec > i; i+=10) { + /* + * Basically, nanosleep is more thread-safe function, + * But, in our case, nanosleep cause crash frequently + */ + usleep(10000); g_mutex_lock(&iotivity_mutex); ret = OCProcess();