RuntimeError: unreachable при попытке вызвать функцию, содержащую импортированную функцию
Есть код на C, который компилируется в wasm. Код использует функцию, импортированную из JS.
При попытке запустить любую функцию C, в которой содержится вызов импортированной функции, происходит ошибка "RuntimeError: unreachable".
Код на С:
extern int jspow(int a, int b);
int func(int a, int b){
return jspow(a, b);
}
Команда для компиляции:
clang --target=wasm32 -nostdlib -Wl,--no-entry -Wl,--export-all -Wl,--unresolved-symbols=ignore-all -o test.wasm test.c
Код на JS:
const imports = {
jspow: function(a, b){
return Math.pow(a, b);
}
}
async function wasm_run(url){
const bytes = await (await fetch(url)).arrayBuffer();
return (await WebAssembly.instantiate(bytes, { imports: imports }));
}
(async ()=>{
const { module, instance } = await wasm_run('test.wasm');
console.log(instance.exports.func(3, 2));
})();
Источник: Stack Overflow на русском