WebAssembly / WebAssembly/binaryen
64-bit atomic load not implemented
Nobody has claimed this yet.
- Dominant language
- WebAssembly
- Stars
- 8.6k
- Forks
- 885
- Avg merge
- 1d 19h
- Merged PRs (30d)
- 69
Description
Trying to debug some code today with -sWASM=0 -pthread -sSAFE_HEAP, and I get
Assertion failed: (!curr->isAtomic && "64-bit atomic load not implemented"), function visitLoad, file /Users/clb/emsdk/binaryen/main/src/passes/I64ToI32Lowering.cpp, line 375.
The atomic operation comes from
(func $SAFE_HEAP_LOAD_i64_1_A (param $0 i32) (param $1 i32) (result i64)
In this particular case I would not care even if 64-bit ops were atomic or not, so even if those were available as nonatomic, it would enable debugging the issue I am looking at.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start in I64ToI32Lowering.cpp at visitLoad, where the reported assertion rejects the SAFE_HEAP_LOAD_i64_1_A operation. Reproduce the -sWASM=0 -pthread -sSAFE_HEAP debugging case and determine how the 64-bit load is handled; done means this case no longer triggers the “64-bit atomic load not implemented” assertion.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp, wasm
- Domain
- compilers
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100