Main thread spread exception when thread-mgr is enabled (#1889)
And refactor clear_wasi_proc_exit_exception, refer to https://github.com/bytecodealliance/wasm-micro-runtime/pull/1869
This commit is contained in:
@ -38,3 +38,6 @@ set (CMAKE_EXE_LINKER_FLAGS
|
||||
|
||||
add_executable(test.wasm main.c)
|
||||
target_link_libraries(test.wasm)
|
||||
|
||||
add_executable(main_thread_exception.wasm main_thread_exception.c)
|
||||
target_link_libraries(main_thread_exception.wasm)
|
||||
|
||||
36
samples/multi-thread/wasm-apps/main_thread_exception.c
Normal file
36
samples/multi-thread/wasm-apps/main_thread_exception.c
Normal file
@ -0,0 +1,36 @@
|
||||
/*
|
||||
* Copyright (C) 2019 Intel Corporation. All rights reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <pthread.h>
|
||||
|
||||
typedef struct ThreadArgs {
|
||||
int start;
|
||||
int length;
|
||||
} ThreadArgs;
|
||||
|
||||
void *
|
||||
thread(void *args)
|
||||
{
|
||||
while (1) {
|
||||
/* When other threads (including main thread) throw exception,
|
||||
this thread can successfully exit the dead loop */
|
||||
}
|
||||
}
|
||||
|
||||
int
|
||||
main()
|
||||
{
|
||||
pthread_t tids;
|
||||
|
||||
if (pthread_create(&tids, NULL, thread, NULL) != 0) {
|
||||
printf("pthread_create failed\n");
|
||||
}
|
||||
|
||||
/* Trigger an exception */
|
||||
__builtin_trap();
|
||||
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user