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)
- Fail allocate but print success? HOT 2
- File allocation bug? HOT 2
- fd_datasync failure. HOT 2
- Set right difference? HOT 1
- Wasm shared heap HOT 3
- Enabling GC and AOT in multi-module sample causes IOT Instruction crash
- [RFC] Assign part of wasm address space to a shared heap to share memory among wasm modules with zero-copying HOT 11
- [RFC] New option to do software bounds check by runtime API instead of inline it in IR in AOT/JIT mode HOT 2
- What's the difference between bound check of fast interpreter mode and bound check of classic interpreter mode HOT 2
- [wasi-nn] Got unexpected results when running tflite_birds_v1_image example HOT 2
- Stack-buffer-overflow in wasm-micro-runtime/core/iwasm/interpreter/wasm_interp_classic.c HOT 1
- O_TRUNC, O_CREAT access mode do not print . HOT 1
- O_DSYNC setting bug. HOT 2
- wamr dont support grain-lang now. HOT 3
- [Question] Different OP_CODE sequence when print the same variable?
- aot compiler: a wrong assumption on suspend_flags
- text relocations warning compiling build aot XIP file HOT 1
- aot: xtensa xip produces relocations for large functions
- buffer overflow in wasm_loader_emit_br_info HOT 5
- Announcement: Transition from TSC Meetings to Monthly Community Meetings HOT 2
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.