Goアセンブリのバグ:2つのケースにおけるフレームポインタの競合
2025-01-04
この記事では、フレームポインタを破壊したバグのあるアセンブリコードによって発生した2つのGoクラッシュについて分析しています。1つのバグは、go-metroライブラリ内でフレームポインタレジスタ(AMD64上のBP)を上書きし、もう1つのバグは、Apache ArrowのARM64アセンブリでフレームポインタをスタックに正しく保存しませんでした。著者は、レジスタとスタックの手動操作を避けるために、Avoのようなアセンブリジェネレータを使用することを推奨しています。この記事では、ABIと呼び出し規約について詳しく説明し、同様の問題の防止方法に関する洞察を提供し、Goのアセンブリガイドラインの理解と遵守の重要性を強調しています。