Also, I'm a little confused about why there are no wasm frames on the
stack.  If you are using DevTools you should be able to see the exact wasm
instruction that caused that trap, or at the very least it should give you
the byte offset of the bad instruction and the function name/number.

On Tue, Dec 10, 2024 at 2:17 PM Alon Zakai <[email protected]> wrote:

> 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
> <https://groups.google.com/d/msgid/emscripten-discuss/CAEX4NpQXCBLLrCDPfS7LWuxG6dRhhWE_Q%2BDq9mr50yJ-QJrN8A%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/CAL_va29wxqD02BS3AjbyDL0%2BLHLtmmPt9j%3DJUG2bDDBB3cHjdA%40mail.gmail.com.

Reply via email to