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

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);
         os_mutex_unlock(&cluster_list_lock);
         return 0;
         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
         /* Only detach current thread when there is no other thread
            joining it, otherwise let the system resources for the
            joining it, otherwise let the system resources for the
            thread be released after joining */
            thread be released after joining */