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

Fix auxiliary stack size not 16-byte aligned issue (#524)

Wenyong Huang 4 лет назад
Родитель
Сommit
3849ece496
2 измененных файлов с 5 добавлено и 1 удалено
  1. 2 0
      core/config.h
  2. 3 1
      core/iwasm/libraries/thread-mgr/thread_manager.c

+ 2 - 0
core/config.h

@@ -241,6 +241,8 @@
 #else
 #define DEFAULT_WASM_STACK_SIZE (12 * 1024)
 #endif
+/* Min auxilliary stack size of each wasm thread */
+#define WASM_THREAD_AUX_STACK_SIZE_MIN (256)
 
 /* Default/min/max stack size of each app thread */
 #if !defined(BH_PLATFORM_ZEPHYR) && !defined(BH_PLATFORM_ALIOS_THINGS) \

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

@@ -151,9 +151,11 @@ wasm_cluster_create(WASMExecEnv *exec_env)
     }
 
     cluster->stack_size = aux_stack_size / (cluster_max_thread_num + 1);
-    if (cluster->stack_size == 0) {
+    if (cluster->stack_size < WASM_THREAD_AUX_STACK_SIZE_MIN) {
         goto fail;
     }
+    /* Make stack size 16-byte aligned */
+    cluster->stack_size = cluster->stack_size & (~15);
 
     /* Set initial aux stack top to the instance and
         aux stack boundary to the main exec_env */