問題タブ [sigbus]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - mmap アドレスへのアクセス時に、シグナル SIGBUS を受信しました
返されたアドレス mmap にアクセスしようとすると、バス エラーが発生します。
私のコードは以下の通りです:
共有サイズ == 256*1024*1024
shared_start == 401000000000 (フラグ MAP_FIXED を使用)
ファイルを 256M に切り詰めます。
mmap を呼び出しても問題はなく、すべてのアドレス範囲がアクセスできないわけではありません。以下の gdb 情報から、アドレス 0x40100f11ff00 は許可されていませんが、アドレス 0x40100fe00000 は許可されていることがわかります。
以下のマップ情報から、上記でアクセスしたアドレスはすべて mmap アドレスの範囲内にあることがわかります。
ただし、これらのアクセスできないアドレスを書き込むと、バス エラーが発生します。プログラムは信号 SIGBUS を受信しました。バス エラーです。
PS.shared_size を 256M から 128M に減らす場合、問題はありません。
c - TTF_RenderText_Solid が SIGBUS を引き起こす
SDL2_ttf を使用してフォントを読み込み、画面にテキストを描画する必要がある次のコードがあります。
構造体宣言:
テキスト レンダリング ヘッダー:
そしてメイン:
しかし、関数を呼び出そうとするたびに SIGBUS が表示されSL_setTextString(SL_Text* text, const char* string)
ます。行に表示されますSDL_Surface* surface = TTF_RenderText_Solid(text->font->font, text->text, text->color)
。
GDB バックトレース:
ところで、一般的な SIGBUS の原因のリストをいただければ幸いです。
go - CIでgo testを実行中のSIGBUSエラーコード= 0x2
これを説明する最善の方法はわかりませんが、この SIGBUS の問題が原因で CI が失敗するのを常に観察しています。エラーはすべて Go の内部にあるようであり、私たちは無知です。
エラーを解決するために、ローカル ボックスでテスト ケースを複数回実行しました。しかし、テストがパスするたびに、SIGBUS の問題は見られません。
これは、CI ボックスのランダム テスト ファイルでのみ発生します。
関連するスタック トレース:
注: ローカル ボックスは MACOS であり、使用している CI はドローンを利用しており、golang:1.13
イメージを使用してすべてのテストを実行しているため、私の仮定は次のとおりです。linux/amd64
CIサーバーで頻繁に発生するSIGBUSエラーは、ローカルで使用してテストしても発生しませんMACOS
。drone exec
android - シグナル 7 (SIGBUS)、コード 1 (BUS_ADRALN) - デバッグ方法
奇妙なクラッシュが発生しました。クラッシュは、リリース ビルドの Samsung Galaxy Tab A (S ペン付き) デバイスでのみ再現されます。
スタック トレースは非常に短く、関連する 2 行のみで構成されています - /lib/arm/my-jni.so (my_func_loop+1662) /lib/arm/my-jni.so (first_function+694)
addr2line を使用してこれらの行を確認しましたが、実際には問題はないと思います。それはおそらくどこかでメモリの問題です。では、どうすればこれをデバッグできますか? 問題の場所に関する情報がないので、問題のある場所を特定するのに役立つフラグを追加してバージョンをリリースする方法はありますか? たとえば、GCC には、これらのバグをキャッチするのに役立つサニタイザーがあります。