AFAIK the one place wasm may trap on unaligned data is atomic operations. See
https://github.com/WebAssembly/threads/blob/main/proposals/threads/Overview.md#alignment ("Unlike normal memory accesses, misaligned atomic accesses trap") You may need to avoid packing data if it will be accessed using atomics. Also atomic SIMD data may need special handling so it is fully aligned. - Alon On Tue, Dec 10, 2024 at 12:39 PM Александр Гурьянов <[email protected]> wrote: > Hi, periodically my WebAssembly (Wasm) crashes with this error: "Uncaught > RuntimeError: unaligned memory access." As far as I understand, Wasm can > perform unaligned memory access. So why am I encountering this error? > > Linker flags: > "-sUSE_SDL=2" "-sUSE_SDL_IMAGE=2" "-sUSE_SDL_MIXER=2" "-sUSE_SDL_TTF=2" > "-sUSE_ZLIB=1" > "-sSDL2_IMAGE_FORMATS=['bmp']" > "-sSTACK_SIZE=1Mb" > "-sTOTAL_MEMORY=512Mb" > "-sALLOW_MEMORY_GROWTH=0" > "-sPTHREAD_POOL_SIZE=6" > "-sPTHREAD_POOL_SIZE_STRICT=0" > "-sFORCE_FILESYSTEM=1" > "-sEXPORT_NAME=VCMI" > "-sMODULARIZE=1" > "-sINVOKE_RUN=0" > "-sEXPORTED_RUNTIME_METHODS=['addRunDependency', 'removeRunDependency', > 'FS', \ > 'lengthBytesUTF8', 'stringToUTF8', 'UTF8ToString', 'callMain', 'run']" > "-sEXPORTED_FUNCTIONS=['_main', '_malloc', '_free']" > "-pthread" > "-fwasm-exceptions" > "-sMALLOC=mimalloc" > "-Oz" > # for debugging > # "-O1" > "--profiling-funcs" > # "-sASSERTIONS=2" > > Full error stack (not very useful): > > Uncaught RuntimeError: unaligned memory access > callUserCallback https://vcmi.dos.zone/launcher/vcmi/vcmiclient.js:9 > runIter https://vcmi.dos.zone/launcher/vcmi/vcmiclient.js:9 > MainLoop_runner https://vcmi.dos.zone/launcher/vcmi/vcmiclient.js:9 > requestAnimationFrame > https://vcmi.dos.zone/launcher/vcmi/vcmiclient.js:9 > MainLoop_scheduler_rAF > https://vcmi.dos.zone/launcher/vcmi/vcmiclient.js:9 > MainLoop_runner https://vcmi.dos.zone/launcher/vcmi/vcmiclient.js:9 > requestAnimationFrame > https://vcmi.dos.zone/launcher/vcmi/vcmiclient.js:9 > MainLoop_scheduler_rAF > https://vcmi.dos.zone/launcher/vcmi/vcmiclient.js:9 > MainLoop_runner https://vcmi.dos.zone/launcher/vcmi/vcmiclient.js:9 > requestAnimationFrame > https://vcmi.dos.zone/launcher/vcmi/vcmiclient.js:9 > MainLoop_scheduler_rAF > https://vcmi.dos.zone/launcher/vcmi/vcmiclient.js:9 > MainLoop_runner https://vcmi.dos.zone/launcher/vcmi/vcmiclient.js:9 > requestAnimationFrame > https://vcmi.dos.zone/launcher/vcmi/vcmiclient.js:9 > MainLoop_scheduler_rAF > https://vcmi.dos.zone/launcher/vcmi/vcmiclient.js:9 > MainLoop_runner https://vcmi.dos.zone/launcher/vcmi/vcmiclient.js:9 > requestAnimationFrame > https://vcmi.dos.zone/launcher/vcmi/vcmiclient.js:9 > MainLoop_scheduler_rAF > https://vcmi.dos.zone/launcher/vcmi/vcmiclient.js:9 > MainLoop_runner https://vcmi.dos.zone/launcher/vcmi/vcmiclient.js:9 > requestAnimationFrame > https://vcmi.dos.zone/launcher/vcmi/vcmiclient.js:9 > MainLoop_scheduler_rAF > https://vcmi.dos.zone/launcher/vcmi/vcmiclient.js:9 > MainLoop_runner https://vcmi.dos.zone/launcher/vcmi/vcmiclient.js:9 > requestAnimationFrame > https://vcmi.dos.zone/launcher/vcmi/vcmiclient.js:9 > MainLoop_scheduler_rAF > https://vcmi.dos.zone/launcher/vcmi/vcmiclient.js:9 > MainLoop_runner https://vcmi.dos.zone/launcher/vcmi/vcmiclient.js:9 > requestAnimationFrame > https://vcmi.dos.zone/launcher/vcmi/vcmiclient.js:9 > MainLoop_scheduler_rAF > https://vcmi.dos.zone/launcher/vcmi/vcmiclient.js:9 > MainLoop_runner https://vcmi.dos.zone/launcher/vcmi/vcmiclient.js:9 > requestAnimationFrame > https://vcmi.dos.zone/launcher/vcmi/vcmiclient.js:9 > MainLoop_scheduler_rAF > https://vcmi.dos.zone/launcher/vcmi/vcmiclient.js:9 > MainLoop_runner https://vcmi.dos.zone/launcher/vcmi/vcmiclient.js:9 > requestAnimationFrame > https://vcmi.dos.zone/launcher/vcmi/vcmiclient.js:9 > MainLoop_scheduler_rAF > https://vcmi.dos.zone/launcher/vcmi/vcmiclient.js:9 > MainLoop_runner https://vcmi.dos.zone/launcher/vcmi/vcmiclient.js:9 > requestAnimationFrame > https://vcmi.dos.zone/launcher/vcmi/vcmiclient.js:9 > MainLoop_scheduler_rAF > https://vcmi.dos.zone/launcher/vcmi/vcmiclient.js:9 > MainLoop_runner https://vcmi.dos.zone/launcher/vcmi/vcmiclient.js:9 > requestAnimationFrame > https://vcmi.dos.zone/launcher/vcmi/vcmiclient.js:9 > MainLoop_scheduler_rAF > https://vcmi.dos.zone/launcher/vcmi/vcmiclient.js:9 > MainLoop_runner https://vcmi.dos.zone/launcher/vcmi/vcmiclient.js:9 > requestAnimationFrame > https://vcmi.dos.zone/launcher/vcmi/vcmiclient.js:9 > MainLoop_scheduler_rAF > https://vcmi.dos.zone/launcher/vcmi/vcmiclient.js:9 > MainLoop_runner https://vcmi.dos.zone/launcher/vcmi/vcmiclient.js:9 > requestAnimationFrame > https://vcmi.dos.zone/launcher/vcmi/vcmiclient.js:9 > MainLoop_scheduler_rAF > https://vcmi.dos.zone/launcher/vcmi/vcmiclient.js:9 > MainLoop_runner https://vcmi.dos.zone/launcher/vcmi/vcmiclient.js:9 > requestAnimationFrame > https://vcmi.dos.zone/launcher/vcmi/vcmiclient.js:9 > MainLoop_scheduler_rAF > https://vcmi.dos.zone/launcher/vcmi/vcmiclient.js:9 > MainLoop_runner https://vcmi.dos.zone/launcher/vcmi/vcmiclient.js:9 > requestAnimationFrame > https://vcmi.dos.zone/launcher/vcmi/vcmiclient.js:9 > MainLoop_scheduler_rAF > https://vcmi.dos.zone/launcher/vcmi/vcmiclient.js:9 > MainLoop_runner https://vcmi.dos.zone/launcher/vcmi/vcmiclient.js:9 > requestAnimationFrame > https://vcmi.dos.zone/launcher/vcmi/vcmiclient.js:9 > MainLoop_scheduler_rAF > https://vcmi.dos.zone/launcher/vcmi/vcmiclient.js:9 > MainLoop_runner https://vcmi.dos.zone/launcher/vcmi/vcmiclient.js:9 > > > > > > -- > You received this message because you are subscribed to the Google Groups > "emscripten-discuss" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion visit > https://groups.google.com/d/msgid/emscripten-discuss/CAKOm%3DVFGvOQOHqn%3D-bNOMdYmzNFSnbBveUhCphGaNGxOgCi3fw%40mail.gmail.com > <https://groups.google.com/d/msgid/emscripten-discuss/CAKOm%3DVFGvOQOHqn%3D-bNOMdYmzNFSnbBveUhCphGaNGxOgCi3fw%40mail.gmail.com?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "emscripten-discuss" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion visit https://groups.google.com/d/msgid/emscripten-discuss/CAEX4NpQXCBLLrCDPfS7LWuxG6dRhhWE_Q%2BDq9mr50yJ-QJrN8A%40mail.gmail.com.
