فهرست منبع

Fix debug thread not created issue (#983)

And fix a double free issue when starting debug server failed
Xu Jun 4 سال پیش
والد
کامیت
68fd6454c2
2فایلهای تغییر یافته به همراه11 افزوده شده و 1 حذف شده
  1. 11 0
      core/iwasm/common/wasm_application.c
  2. 0 1
      core/iwasm/libraries/debug-engine/debug_engine.c

+ 11 - 0
core/iwasm/common/wasm_application.c

@@ -105,6 +105,9 @@ wasm_application_execute_main(WASMModuleInstanceCommon *module_inst, int32 argc,
        the actual main function. Directly calling main function
        may cause exception thrown. */
     if ((func = wasm_runtime_lookup_wasi_start_function(module_inst))) {
+#if WASM_ENABLE_DEBUG_INTERP != 0
+        wasm_runtime_start_debug_instance(exec_env);
+#endif
         return wasm_runtime_call_wasm(exec_env, func, 0, NULL);
     }
 #endif /* end of WASM_ENABLE_LIBC_WASI */
@@ -186,6 +189,10 @@ wasm_application_execute_main(WASMModuleInstanceCommon *module_inst, int32 argc,
             (uint32)wasm_runtime_addr_native_to_app(module_inst, argv_offsets);
     }
 
+#if WASM_ENABLE_DEBUG_INTERP != 0
+    wasm_runtime_start_debug_instance(exec_env);
+#endif
+
     ret = wasm_runtime_call_wasm(exec_env, func, argc1, argv1);
     if (ret && func_type->result_count > 0 && argc > 0 && argv)
         /* copy the return value */
@@ -570,6 +577,10 @@ wasm_application_execute_func(WASMModuleInstanceCommon *module_inst,
         goto fail;
     }
 
+#if WASM_ENABLE_DEBUG_INTERP != 0
+    wasm_runtime_start_debug_instance(exec_env);
+#endif
+
     if (!wasm_runtime_call_wasm(exec_env, target_func, argc1, argv1)) {
         goto fail;
     }

+ 0 - 1
core/iwasm/libraries/debug-engine/debug_engine.c

@@ -315,7 +315,6 @@ wasm_debug_instance_create(WASMCluster *cluster)
 
     if (!wasm_debug_control_thread_create(instance)) {
         LOG_ERROR("WASM Debug Engine error: failed to create control thread");
-        wasm_runtime_free(instance);
         goto fail3;
     }