Просмотр исходного кода

thread-mgr: Prevent an already detached thread from being detached again (#1487)

If WASM app has called pthread_detach() to detach a thread, it will be detached again
when thread exits. Attempting to detach an already detached thread may result in crash
in musl-libc. This patch fixes it.
Shengyun Zhou 3 лет назад
Родитель
Сommit
edaff3c6ec
1 измененных файлов с 1 добавлено и 1 удалено
  1. 1 1
      core/iwasm/libraries/thread-mgr/thread_manager.c

+ 1 - 1
core/iwasm/libraries/thread-mgr/thread_manager.c

@@ -705,7 +705,7 @@ wasm_cluster_detach_thread(WASMExecEnv *exec_env)
         os_mutex_unlock(&cluster_list_lock);
         return 0;
     }
-    if (exec_env->wait_count == 0) {
+    if (exec_env->wait_count == 0 && !exec_env->thread_is_detached) {
         /* Only detach current thread when there is no other thread
            joining it, otherwise let the system resources for the
            thread be released after joining */