📚
[Astar]エラー備忘録15( コンパイル時に「An unexpected panic function...」発生)
次のエラーが出たため、備忘録として残します。
1 結論
エラー発生状況:PSP22FlashMintコンパイル時に「An unexpected panic function...」発生
結論:「overflow-checks」や「lto」を「false」にする(暫定処理)
2 エラー内容
コンパイル実行時にこちらのエラーが発生しました。
ERROR: Validation of the Wasm failed.
ERROR: An unexpected panic function import was found in the contract Wasm.
This typically goes back to a known bug in the Rust compiler:
https://github.com/rust-lang/rust/issues/78744
As a workaround try to insert `overflow-checks = false` into your `Cargo.toml`.
This will disable safe math operations, but unfortunately we are currently not
aware of a better workaround until the bug in the compiler is fixed.
ERROR: An unexpected import function was found in the contract Wasm: _ZN4core9panicking5panic17hfd9ccce09b2a6620E.
The only allowed import functions are those starting with one of the following prefixes:
seal, memory
chatGPTでも聞いてみましょう。
書かれている通り、予期しない、「パニック関数」がインポートされたためエラーとなっています。
ちなみに、個人的には、最後の「許可されるインポート関数の接頭辞には、「seal」,
「memory」がある」という部分が気になっています。
chatGPT
これはすでに知られているバグとありますが、インポート元が、「seal」,
「memory」をつけるように修正すれば直るのでは?と思いました。
ただ、それを言っても仕方ないので、現実的な解決策を見ようと思います。
下のように、「overflow-checks」や「lto」が「true」などの条件が揃った時は、このパニック関数がインポートされるようです。
そのため、解決策はシンプルで、「overflow-checks」や「lto」を「false」にするというものです。
ただ、もちろん、オーバーフローチェックなどがないため、良い解決策ではなく、暫定的なものかなと思いました。
ちなみに、「lto」は「Link-Time Optimization」の略称のようです。
「Cargo.toml」に下のように設定することで、エラーが出なくなりました。
今回は以上です。
Discussion