Comments (4)
Oh! I know this one. The icall implementation is incorrect at the moment, and we fail a spec test that demonstrates this exact issue. When we expand the icall instruction, we check the type index at the call site with the type index of the callee. The problem is, multiple type indices can have the same structural type - the $early_fn
type will be assigned to $fn0
, which will be a different index than $fnT0
.
Full spec test compliance is important to us. I think we will achieve it within the next month or two. This issue is pretty isolated from the engineering we're doing to fix the rest of the major spec compliance issues, so I should be able to get a fix in pretty soon.
from lucet.
What commit were you on when you ran into this issue? I was somewhat surprised to find this works on master, since there are related spec tests we don't currently pass.
This:
(module $calli
(table funcref (elem $fn0))
(type $fnT0 (func (param i32) (result i32)))
(type $fnT1 (func (param i32) (result i32)))
(func $fn0 (param $arg i32) (result i32) (i32.const 0))
(func $main0 (drop (call_indirect (type $fnT1) (i32.const 0) (i32.const 0))))
(export "_start" (func $main0))
)
does still erroneously claim BadSignature
, and that's definitely due to us not checking structural equivalence between $fnT0
and $fnT1
. But it's also not the same code you reported :) I'm left wondering what's different that your example seems to run without issue when I tested it..
from lucet.
I don't have access to the system where I produced this but I checked out lucet an hour or two before I filed the bug (i.e. yesterday). If you aren't seeing it then I expect it is dependent on the wat -> wasm compiler behavior. I'm using wasm-as
from binaryen and I'll have to get access to my home workstation before I can figure out what version it is.
from lucet.
lucetc
can accept wat syntax directly, and translates it to wasm using the wabt
package's translator (also available as the wat2wasm
executable. So, its probably a difference in how those two translators work.
from lucet.
Related Issues (20)
- Errors while executing hello world example with lucetc-wasi HOT 5
- Arrch64:Do we have plan to support aarch64 HOT 1
- Add command-line option to `lucetc` to limit the globals size of produced modules.
- Reduce the reliance on strings in error types
- Difference between Lucet and other standalone Wasm runtimes like WAVM or Wasmer HOT 1
- LimitsExceeded("heap spec initial size: HeapSpec ... HOT 1
- Unable to get hostcall examples working: lucetc errors with both Rust and AssemblyScript version HOT 1
- CNCF-Runtime discussion/presentation
- cargo cannot resolve dependency HOT 3
- Rust runtime is unable to find symbol "main" of Hello World example HOT 1
- Aarch64 support: What is missing? HOT 2
- Calling guest function via get_func_from_idx() can trigger "Invalid Hostcall" HOT 2
- why is Lucet slower than wasmtime HOT 4
- Screencast in README is too fast to read HOT 2
- "Getting Started" link broken HOT 1
- Access Lucet from REST/Web Server? HOT 1
- lucet-runtime-example doesn't work when specifying latest crate version (0.6.1)
- RuntimeTerminated(TerminationDetails::BlockOnNeedsAsync) HOT 2
- [Documentation] seems a little bit outdated HOT 5
- Any plan to support X86-32? HOT 4
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 lucet.