rbCanvasとp5.rbの違い

chobishiba
·

今日も今日とてチャレンジ。

オブジェクト使ったり、accessor使ったりいろいろ作り込めたんだけど、p5.rbで実行しようとするとruby.wasmでエラー

browser.umd.js:2712 Uncaught Error: Ruby Fatal Error: Ruby APIs that may rewind the VM stack are prohibited under nested VM operation (rb_wasm_handle_jmp_unwind)

Nested VM operation means that the call stack has sandwitched JS frames like JS -> Ruby -> JS -> Ruby caused by something like `window.rubyVM.eval("JS.global[:rubyVM].eval('Fiber.yield')")`

Please check your call stack and make sure that you are **not** doing any of the following inside the nested Ruby frame:

1. Switching fibers (e.g. Fiber#resume, Fiber.yield, and Fiber#transfer)

Note that `evalAsync` JS API switches fibers internally

2. Raising uncaught exceptions

Please catch all exceptions inside the nested operation

3. Calling Continuation APIs

at rb_wasm_throw_prohibit_rewind_exception (browser.umd.js:2712:25)

RbFatalError は以下らしい

Extends RbError

Error class thrown by Ruby execution when it is not possible to recover. This is usually caused when Ruby VM is in an inconsistent state.

解決にまで至れず今日のコードはrbCanvas限定

明日・明後日分のも浮かんだからチャレンジ中。大学の課題から全力現実逃避したので明日こそ…明日こそ…

【2024/01/08 追記】

まさかのrandのrangeの始端を省略してたからだった…まさかの…なにはともあれ解決できたのは嬉しい…

@chobishiba
ソフトウェアエンジニアやったり大学生やったり