WebAssembly.instantiateStreaming(): Compiling function #1:”funcname” failed: expected 0 elements on the stack for fallthru, found 1 @

WASMコンパイルエラーのメモです。

エラー内容


index.php:1 Uncaught (in promise) CompileError: WebAssembly.instantiateStreaming(): Compiling function #1:”funcname” failed: expected 0 elements on the stack for fallthru, found 1 @+224

funcname問題のあるWASM関数名
expected 0期待されるresult数が0
found 1スタックに残った数が1

対処の例

WATファイルが編集できる状態にし、整合性が取れているか検証します。

local.get, const , addの結果, subの結果等によるstackへのpush数と、
local.set, addの引数, subの引数等で消費したstackからのpop数との差がresult数と一致しない場所が存在します。

;; (1) index-1の値がスタックに残っている
(i32.sub (local.get $index) (i32.const 1))                    ;; push - pop = 1

;; (2) localにセットしたためスタックに残らない
(local.set $index (i32.sub (local.get $index) (i32.const 1))) ;; push - pop = 0

上記の例と検証

(1)インデックスー1の値が必要な為、1つのresultがスタックに残る

(2)一時的なローカル変数として使用している為、スタックに残ってはならない

コメント

タイトルとURLをコピーしました