bytecodealliance / bytecodealliance/ComponentizeJS
Unable to call method on resource, works in Rust guest but not JS guest
- 主要语言
- Rust
- 星标
- 391
- 派生
- 53
- 平均合并
- 3 天 5 小时
- 30 天内合并 PR
- 1
描述
I've got a bit of a challenging one here. It's hard to trace the issue because I don't have debug information available from SpiderMonkey (will traces from the engine be available via some debug mode at some point?)
I have a repro but it requires my toolchain. Shouldn't take long to set up:
1. Grab the latest `rune-cli` release from https://github.com/rune-runtime/rune/releases/tag/v0.1.11 (or use `curl -fsSL https://rune.sh/install.sh | bash` to install `rune` locally) -- I think you'll need a Mac for this for the time being.
2. Create a new directory, ie. `test` & cd into it
3. Run `rune new game --template cube-js` -- this will create a new Rune project in the current directory
4. Run `npm i`
5. Run `rune run`. Observe that the program crashes with [1]
7. In `game.js`, comment out line 194 and `rune run` again. Observe the program does not crash.
This invocation, `pipeline.getBindGroupLayout(0)` works in my Rust wasm32-wasip1 guest module (you can try it by doing `rune new game --template cube-rust`) Because of this, I believe there is a bug in ComponentizeJS. Without better debugging I can't say for certain.
If you need to debug the use of ComponentizeJS in my toolchain, you should refer to the module in `node_modules/@bytecodealliance/ComponentizeJS`, which is used by the `@rune-runtime/rollup-plugin-rune` Rollup plugin to build a wasm module for Rune.
[1]
```
Message: Game didn't initialize: error while executing at wasm backtrace:
0: 0x2f363 - !
1: 0x2f36c - !
2: 0x22ee52 - !
3: 0x7a8ac3 - !rune:runtime/guest#init
Caused by:
wasm trap: wasm `unreachable` instruction executed
Location: crates/rune/src/runtime/mod.rs:97
```
Guidance is appreciated. Thanks.
贡献指南
这个仓库没有索引到贡献指南
调研方向
使用 `cube-js` 模板复现崩溃,并与正常工作的 `cube-rust` 模板进行比较,重点关注 `game.js` 第 194 行。然后检查 `node_modules/@bytecodealliance/ComponentizeJS`、`@rune-runtime/rollup-plugin-rune` 集成,以及 `crates/rune/src/runtime/mod.rs:97` 处报告的 trap。完成标准是 JavaScript guest 可以调用 `pipeline.getBindGroupLayout(0)`,且不会触发 wasm `unreachable` trap。
由索引模型根据 Issue 内容生成。
评估
- 技术栈
- javascript, rust, wasm
- 领域
- tooling
- Issue 类型
- 缺陷
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 活跃度
- 停滞
- 描述清晰度
- 需要澄清
- 新手友好度
- 30/100