Commit Graph
1558 Commits
Author SHA1 Message Date
YAMAMOTO TakashiandGitHub 0677288f22 run_wasi_tests.sh: Provide stdin by ourselves (#2576)
This improves test consistency between typical local environments and
github runners.

This is necessary for some of latest wasi-threads tests.

cf. https://github.com/yamt/toywasm/commit/570e6706312cbdccb9d5268347186b441a24444b
2023-09-22 08:57:48 +08:00
YAMAMOTO TakashiandGitHub cf97ee081f test_wamr.sh: Print a bit more meaningful message (#2574) 2023-09-21 18:39:12 +08:00
ZHU HaoandGitHub 47daaeecc7 Fix compiling error for RT-Thread (#2569)
struct dfs_fd has been deprecated
2023-09-21 13:33:03 +08:00
YAMAMOTO TakashiandGitHub c7a7db21b7 export_native_api.md: Add a note about thread termination (#2572) 2023-09-21 13:32:08 +08:00
YAMAMOTO TakashiandGitHub 6fca48d8e6 Fix inverted WASM_DISABLE_WAKEUP_BLOCKING_OP checks (#2571) 2023-09-21 11:56:21 +08:00
YAMAMOTO TakashiandGitHub 444b159963 Implement async termination of blocking thread (#2516)
Send a signal whose handler is no-op to a blocking thread to wake up
the blocking syscall with either EINTR equivalent or partial success.

Unlike the approach taken in the `dev/interrupt_block_insn` branch (that is,
signal + longjmp similarly to `OS_ENABLE_HW_BOUND_CHECK`), this PR
does not use longjmp because:
* longjmp from signal handler doesn't work on nuttx
  refer to https://github.com/apache/nuttx/issues/10326
* the singal+longjmp approach may be too difficult for average programmers
  who might implement host functions to deal with

See also https://github.com/bytecodealliance/wasm-micro-runtime/issues/1910
2023-09-20 18:11:52 +08:00
zoraaverandGitHub d436e846ab Add support for running tests on apple M1 macs (#2554) 2023-09-17 13:54:28 +08:00
Enrico LoparcoandGitHub 132378f30b Allow using custom signal handler from non-main thread (#2551)
Remove thread local attribute of prev_sig_act_SIGSEGV/SIGBUS to allow using
custom signal handler from non-main thread since in a thread spawned by
embedder, embedder may be unable to call wasm_runtime_init_thread_env to
initialize them.

And fix the handling of prev_sig_act when its sa_handler is SIG_DFL, SIG_IGN,
or a user customized handler.
2023-09-15 18:55:16 +08:00
YAMAMOTO TakashiandGitHub 9c34fc3514 Fix build with ancient GCC (4.8) (#2553)
Fixes: https://github.com/bytecodealliance/wasm-micro-runtime/issues/2552
2023-09-15 16:24:12 +08:00
liang.heandGitHub f697244f33 runtest.py: Show accurate case amount in summary (#2549)
Instead of showing the total case amount under *spec/test/core*, show
the accurate number of how many test cases were executed.
2023-09-15 10:01:08 +08:00
Enrico LoparcoandGitHub 83db970953 Add user to enlarge memory error callback (#2546) 2023-09-13 18:03:49 +08:00
YAMAMOTO TakashiandGitHub a6fda9b7ab Add an API to terminate instance (#2538)
Add API wasm_runtime_terminate to terminate a module instance
by setting "terminated by user" exception to the module instance.

And update the product-mini of posix platforms.

Note: this doesn't work for some situations like blocking system calls.
2023-09-13 17:09:31 +08:00
YAMAMOTO TakashiandGitHub f128150d43 fd_object_release: Preserve errno (#2535)
Preserve errno because this function is often used like
the following. The caller wants to report the error from the main
operation (`lseek` in this example), not from fd_object_release.

```
    off_t ret = lseek(fd_number(fo), offset, nwhence);
    fd_object_release(fo);
    if (ret < 0)
        return convert_errno(errno);
```
2023-09-08 12:26:32 +08:00
YAMAMOTO TakashiandGitHub 534a8cf9f4 Handle a return from wasi _start function correctly (#2529)
This fixes a few test cases in wasi-threads testsuite like wasi_threads_return_main_block.
And also move the special handling for "wasi proc exit" to a more appropriate place.
2023-09-08 11:49:04 +08:00
YAMAMOTO TakashiandGitHub 6c846acc59 Implement module instance context APIs (#2436)
Introduce module instance context APIs which can set one or more contexts created
by the embedder for a wasm module instance:
```C
    wasm_runtime_create_context_key
    wasm_runtime_destroy_context_key
    wasm_runtime_set_context
    wasm_runtime_set_context_spread
    wasm_runtime_get_context
```

And make libc-wasi use it and set wasi context as the first context bound to the wasm
module instance.

Also add samples.

Refer to https://github.com/bytecodealliance/wasm-micro-runtime/issues/2460.
2023-09-07 14:54:11 +08:00
Cengizhan PasaogluandGitHub af2f3c8759 Fix typo for IP address buffer (#2532) 2023-09-07 14:29:52 +08:00
YAMAMOTO TakashiandGitHub 151dfae49c Unifdef -U WASMTIME_SSP_STATIC_CURFDS (#2533)
The macro WASMTIME_SSP_STATIC_CURFDS isn't used in the source code,
remove the related macro control code.
2023-09-06 15:25:58 +08:00
Marcin KolnyandGitHub 4798b69f36 Add ARM aeabi symbol for clearing memory content in a specific range (#2531) 2023-09-06 13:17:16 +08:00
Enrico LoparcoandGitHub 709127d631 Add callback to handle memory.grow failures (#2522)
When embedding WAMR, this PR allows to register a callback that is
invoked when memory.grow fails.

In case of memory allocation failures, some languages allow to handle
the error (e.g. by checking the return code of malloc/calloc in C), some
others (e.g. Rust) just panic.
2023-09-05 16:41:52 +08:00
YAMAMOTO TakashiandGitHub 48b71a05fb libc-wasi: Remove unused code (#2528) 2023-09-04 19:14:56 +08:00
YAMAMOTO TakashiandGitHub 9e3904337e Revert "Return error when exception was raised after main thread finishes" (#2524)
This reverts commit 71d43f3ca1.
2023-09-04 18:01:09 +08:00
YAMAMOTO TakashiandGitHub 2e78230e06 set_exception_visitor: Remove the special case for wasi proc exit (#2525)
While wasi proc exit is not a real trap, what the runtime does on it is mostly same as
real traps. That is, kill the siblings threads and represent the exit/trap as the result of
the "process" to the user api. There seems no reason to distinguish it from real traps
here.

Note that:
- The target thread either doesn't care the specific exception type or ignore wasi
  proc exit by themselves. (clear_wasi_proc_exit_exception)
- clear_wasi_proc_exit_exception only clears local exception.
2023-09-04 16:52:19 +08:00
Marcin KolnyandGitHub 8c2dc1d011 Add unit tests for the tid allocator (#2519)
Add simple infrastructure to add more unit tests in the future. At the moment tests
are only executed on Linux, but can be extended to other platforms if needed.

Use https://github.com/google/googletest/ as a framework.
2023-09-04 13:21:10 +08:00
YAMAMOTO TakashiandGitHub 1ff41ebdc2 Implement os_usleep for posix (#2517) 2023-09-01 12:10:54 +08:00
YAMAMOTO TakashiandGitHub 382d52fc05 Stop abusing shared memory lock to protect exception (#2509)
Use a separate global lock instead.

Fixes: https://github.com/bytecodealliance/wasm-micro-runtime/issues/2407
2023-08-31 20:39:08 +08:00
Marcin KolnyandGitHub 53d7027de0 Implement strict validation of thread IDs according to the specification (#2521) 2023-08-31 20:23:54 +08:00
Maks LitskevichandGitHub 411b903cee Add mutex stress test (#2472)
As a part of stress-testing we want to ensure that mutex implementation is working
correctly and protecting shared resource to be allocated from other threads when
mutex is locked.

This test covers the most common situations that happen when some program uses
mutexes like locks from various threads, locks from the same thread etc.
2023-08-30 19:01:44 +08:00
Jämes MénétreyandGitHub ff151fb7ba sgx-ra: Disable the building of samples (#2507) 2023-08-28 09:42:16 +08:00
Wenyong Huang b7a9da1620 Merge branch main into dev/wasi-libc-windows 2023-08-23 17:05:19 +08:00
Wenyong HuangandGitHub fa2f29fd8a Fix issues in releasing wamr-lldb (#2497)
- Update lldb patch due to swig was upgraded to 4.1 in macos
- Export LD_LIBRARY_PATH for searching libpython3.10.so when validating wamr-lldb
  in Ubuntu-20.04
- Rename lldb-wasm.patch to lldb_wasm.path
2023-08-23 12:56:11 +08:00
Wenyong HuangandGitHub 858d1dd69c Fix duplicate vector init in wasm_module_validate (#2498) 2023-08-23 12:35:46 +08:00
Marcin KolnyandGitHub 834e0314aa Enable running WASI tests on Windows (#2489)
Tests are not passing yet therefore we don't enable them in CI.
2023-08-23 10:51:30 +08:00
Xu JunandGitHub 377c3d7a38 Auto increase port number in lldb validation script (#2492) 2023-08-22 14:24:42 +08:00
liang.heandGitHub 2b30bb0fda Upgrade swig to 4.1 (#2491)
Upgrade to sig@4.1 when building wamr-lldb on MacOS since swig@3
had been disabled: https://formulae.brew.sh/formula/swig
2023-08-22 13:57:23 +08:00
Huang QiandGitHub 051dfbbb9e Fix a typo in is_win_platform (#2490) 2023-08-22 11:50:11 +08:00
Marcin KolnyandGitHub 7f996a4559 Update version number and release notes (#2378)
Update the version number to 1.2.3 and update the release notes.
2023-08-22 08:55:36 +08:00
tonibofarullandGitHub 59bedecc5e Fix set wasi args order (#2485)
set_wasi_args should be called before module instantiation.
2023-08-22 08:50:26 +08:00
liang.heandGitHub f0632edc37 Clone the input binary during wasm_module_validate (#2483) 2023-08-21 19:43:28 +08:00
Wenyong HuangandGitHub a2f76cf93c Fix typo in aot_emit_aot_file.c (#2478) 2023-08-18 13:57:23 +08:00
Maks LitskevichandGitHub 0e12cdec48 Add sample pre-commit hook (#2470)
Using pre-commit hooks helps us to decrease CI load and improve developers' experience.
2023-08-18 10:40:05 +08:00
Marcin KolnyandGitHub aefb265b0d Move commn iwasm code related to WASI to a shared file (#2477) 2023-08-18 10:37:41 +08:00
Wenyong HuangandGitHub 2cb701f7f3 Fix windows AOT hw bound check (#2475)
When AOT out of bound linear memory access or stack overflow occurs, the call stack of
AOT functions cannot be unwound currently, so from the exception handler, runtime
cannot jump back into the place that calls the AOT function.
We temporarily skip the current instruction and let AOT code continue to run and return
to caller as soon as possible. And use the zydis library the decode the current instruction
to get its size.

And remove using RtlAddFunctionTable to register the AOT functions since it doesn't work
currently.
2023-08-18 10:16:03 +08:00
Wenyong HuangandGitHub 6716c23dd1 wamrc: Fix windows relocation to aot_func_internal#n (#2474)
AOT relocation to aot_func_internal#n is generated by wamrc --bounds-checks=1.
Resolve the issue by applying the relocation in the compilation stage by wamrc and
don't generate these relocations in the AOT file.

Fixes #2471.
2023-08-18 09:56:00 +08:00
Xu JunandGitHub 7baaed2fb8 Fix opcode overwrite issue in fast interp (#2476) 2023-08-17 19:49:35 +08:00
Marcin KolnyandGitHub 3534980c9e Fix spec tests on windows, enable spec tests for windows in CI (#2473) 2023-08-17 19:23:27 +08:00
Wenyong HuangandGitHub e2f8721ec9 Fix issues reported by Coverity and clear windows warnings (#2467) 2023-08-17 10:54:02 +08:00
Maks LitskevichandGitHub 4ce675aacd Add another wamr test (#2411)
Follows up #2364 where we discussed that we might want to have a test
which has really short thread function and creates many threads.
2023-08-17 10:31:05 +08:00
TianlongLiangandGitHub c820643b2b wamrc: More friendly to print help info (#2451)
Allow wamrc to print help info like below:
```bash
wamrc --target=help
wamrc --target-abi=help
wamrc --target=<target> --cpu=help
wamrc --target=<target> --cpu=help --cpu-features=+help
```
2023-08-16 11:28:45 +08:00
YAMAMOTO TakashiandGitHub 0f18051e66 aot: Disable musttail for mips (#2457)
Fixes https://github.com/bytecodealliance/wasm-micro-runtime/issues/2412
2023-08-15 11:15:45 +08:00
Maks LitskevichandGitHub a9bd6af0ac Build wasi-libc from source in WAMR CI (#2465)
We need to apply some bug fixes that were merged to wasi-libc because wasi-sdk-20
is about half a year old.

It is a temporary solution and the code will be removed when wasi-sdk 21 is released.
2023-08-15 10:36:10 +08:00