Comments (6)
Hi, do you have a minimum reproducible test case that I could take a look at?
from wasm-micro-runtime.
After further investigation it seems to happens because data segments are allowed to truncate trailing zeroes and rely on the fact that target memory is zeroed.
Is it possible that mmap()
ed memory is zeroed by default on normal systems but not on zephyr ?
from wasm-micro-runtime.
In the Zephyr platform, if you are not explicitly using set_exec_mem_alloc_func
, then by default you are using BH_MALLOC
(system malloc), you can refer to this file. I think it's worth a try to manually zero out the memory to see whether this is the cause
from wasm-micro-runtime.
Adding a memset()
to os_malloc()
in zephyr_platform.c
fixes the issue.
But most of the time memory is cleared again (like aot_runtime.c
/ runtime_malloc()
) so
I don't think it's the correct fix?
But I am not sure how to find the call to malloc that doesn't clear but should...
from wasm-micro-runtime.
@sasq64 sounds like os_mmap
doesn't clear the memory in zephyr platform, os_mmap
is supposed to memset the memory with 0 by default. Could you please try:
diff --git a/core/shared/platform/zephyr/zephyr_platform.c b/core/shared/platform/zephyr/zephyr_platform.c
index fc54ba55..4827c323 100644
--- a/core/shared/platform/zephyr/zephyr_platform.c
+++ b/core/shared/platform/zephyr/zephyr_platform.c
@@ -179,12 +179,18 @@ strcspn(const char *s, const char *reject)
void *
os_mmap(void *hint, size_t size, int prot, int flags, os_file_handle file)
{
+ void *addr;
+
if ((uint64)size >= UINT32_MAX)
return NULL;
if (exec_mem_alloc_func)
- return exec_mem_alloc_func((uint32)size);
+ addr = exec_mem_alloc_func((uint32)size);
else
- return BH_MALLOC(size);
+ addr = BH_MALLOC(size);
+
+ if (addr)
+ memset(addr, 0, size);
+ return addr;
}
void *
from wasm-micro-runtime.
I see you have already merge this to main
. Anyway, no surprise -- this fixes the issue.
from wasm-micro-runtime.
Related Issues (20)
- aot: xtensa xip produces relocations for large functions
- buffer overflow in wasm_loader_emit_br_info HOT 6
- Announcement: Transition from TSC Meetings to Monthly Community Meetings HOT 5
- Support for clang compilation (and cross-compilation) for native windows platform (--target=x86_64-windows-msvc) HOT 1
- iwasm fails on try catch HOT 2
- iwasm doesn't support new/final instructions for Exception Handling proposal HOT 2
- AOT invoking import without attachment HOT 35
- host/target confusion in build_llvm.py
- nightly-run CI ran failed
- CI doesn't seem to cover xtensa at all HOT 2
- This value might overflow 64 bit int HOT 3
- Compiled AOT causes SIG 7 Error HOT 3
- Slow AOT compilation HOT 5
- Use a newer version of LLDB for debugging?
- Use WAMR as handler in crun runtime HOT 1
- Out of bounds memory access in wasm_interp_fast HOT 1
- Compiler complains about the const pointer being written to. HOT 2
- Rust sdk does not work, cannot create an instance "thread signal env initialized failed" HOT 4
- CI: ghcr.io login failure HOT 9
- spec_test_on_nuttx.yml should not edit kconfig files with sed
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from wasm-micro-runtime.