問題タブ [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.
ios - このクラッシュを理解する方法は?:SIGBUS BUS_ADRALN
それはスタックトレースにあり、私はこのエラーを理解していません:
クラッシュが発生することがありますが、どのようなアクションが発生するのかわかりません。
この問題をどのように理解し、問題を解決できますか?
c++ - NPAPI: RetainObject() ハンドラーを 2 回行う必要があります。それ以外の場合は SIGBUS
私の NPAPI プラグインでは、一部のオブジェクトには、読み取りおよび書き込みが可能で、特定のイベントで呼び出される「onEvent」プロパティがあります。
私の Javascript コードは次のようになります。
プラグインの C++ 側には、次のようなコードがあります。
奇妙なことに、私はしばらくの間 SIGBUS の問題に苦しんでいましたNPN_RetainObject()
が、ゲッターに を追加すると、上記のようにすべてがうまくいきました。
Mozilla docにも、 NPAPI に関するTaxilian の素晴らしいドキュメントにも必要であるという声明は見つかりませんでした。
よくわかりません: 保持したプロパティをブラウザが要求した場合、なぜ再度保持する必要があるのでしょうか?
InvokeDefault()
代わりに呼び出すときに関数を保持する必要がありますか? しかし、その後、なぜですか?? 保持したい旨はすでに述べた。
私に言わずにやりますか、getProperty()
それともInvokeDefault()
実際にNPN_ReleaseObject()
やりますか?
ios - NSKeyedUnarchiver SIGBUS BUS_ADRALN クラッシュ
通常は非常にうまく機能する次の方法で、NSFileWrapper のデータを解凍します。
ただし、回線の SIGBUS クラッシュが時々発生しますunarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
。このタイプの例外は、私の例外ハンドラーによってキャッチされていないと思いますか? このような例外に対処するにはどうすればよいですか?また、その原因は何ですか?
Crashlytics のクラッシュ レポートは次のとおりです。
c++ - C および C++ で SIGBUS をキャッチする
SIGBUS をキャッチしたいのですが、コードを以下に示します。
printf を使うと catch_sigbus を呼び出すとキャッチできますが、cout を使うとキャッチできません。誰でも私を助けることができますか?Ubuntu 12.04で実行しています。
別の質問があります。SIGBUS をキャッチしたら、どうすれば si_code を取得できますか?BUS_ADRALN/BUS_ADRERR/BUS_OBJERR
c++ - どのような場合に、派生クラスへの基本クラスのcスタイルのキャストがクラッシュを引き起こす可能性があります
ランダムクラッシュ(SIGBUS)を調査しており、クラッシュしたメソッドを呼び出すポインターが破損する可能性があるものを見つけようとしています。このポインタは、C++コードでCスタイルのキャストを使用して基本クラスからキャストされていることがわかりました。だから、どのような場合にそのようなキャストがクラッシュを引き起こすのだろうかと思い、それが私の問題の根本的な原因であるかどうかを理解しようとします。
c - Linux での構造体の割り当ては ARM では失敗するが、x86 では成功する
本当に奇妙なことに気づきました。次の構造が定義されているとします
この構造は、ネットワークから受け取る大きなバッファに含まれています。
次のコードは x86 で動作しますがSIGBUS
、ARM で受信します。
ポインターの逆参照を memcpy に置き換えることで問題が解決しました。
ARM で SIGBUS について検索すると、これがメモリ アラインメントに関連していることがわかりました。
誰かが何が起こっているのか説明できますか?
linux - mincore で識別されるように、RAM にある mmap ed バッファーから memcpy を実行中に SIGBUS
私はブロックを次のようにマッピングしています:
mapAddr = mmap((void*) 0, curMapSize, PROT_NONE, MAP_LOCKED|MAP_SHARED, fd, curMapOffset);
これが失敗しない場合は、(mapAddr != MAP_FAILED)
mincore を次のようにクエリします。
err = mincore((char*) mapAddr, pageSize, &mincoreRet);
RAMにあるかどうかを確認します。RAM にある場合 (err == 0 && mincoreRet & 0x01)、次のように読み取るために再度 mmap します。
copyAddr = mmap((void*) 0, curMapSize, PROT_READ, MAP_LOCKED|MAP_SHARED, fd, curMapOffset);
次に、次のようにバッファにコピーしようとします。
memcpy(data, copyAddr, pageSize);
たまに最後の memcpy で SIGBUS を取得する場合を除いて、すべて正常に動作します。失敗時に/proc/ /smapsを確認すると、以下に示すように Rss フィールドと Locked フィールドが 0 になっていることがわかりました。
何かご意見は?これは、カーネル バージョン 3.5.0-36 の ubuntu 12.0.4 で発生しています。
c - 2Gb を超える MAP_SHARED ファイルへの mmap バス書き込みエラー
MAP_SHARED を使用してメモリ マップ ファイルを作成しようとしています。ファイル サイズが 2 GB に達すると、問題が発生します。以下に貼り付けたコードは、私が(テストとして)使用しているものです。
上記のコードでは、ファイルのオフセットが 2GB に達するとバス エラーが発生します。これらは私が試したことです:
- NUM_FILES を 16 に、len を 1GB に変更しても問題はありません。
- メモリに書き込む for ループ (mmap のみ) を削除すると、プログラムはクラッシュしません (len が 2GB をはるかに超える場合でも)。Linux カーネルは、読み書きするまでページを実際にファイルにマップしません。 mmap された領域。
- mmap 呼び出しを MAP_SHARED から MAP_ANON に変更し (最初の mmap 呼び出しのコメントを解除し、2 番目の mmap 呼び出しをコメントアウト)、ファイルにリンクしていない場合、問題はありません (書き込みが成功した場合でも)。
- /dev/shm (30GB) には十分なスペースがあります。ここでは 16GB しか使用していません。
- 割り当てられたすべてのバイトに書き込む必要はありません。最後に mmap された領域 (内側の for ループを外側に移動) に書き込む必要があるだけで、オフセット + BLOCK_SIZE >= 2gb の場合、バス エラーが発生します。
- Ubuntu 13.10 と CentOS 6.4 でこれを試しましたが、どちらも同じ問題を抱えています。
これは Linux カーネルの問題でしょうか? 2 GB を超える MAP_SHARED を使用して単一のファイルを mmap し、それを正常に使用 (読み取り/書き込み) した人はいますか?
android - Service で 2 回目の startActivity を実行した後、例外、Sigbus、または Sigsegv エラーでアプリがクラッシュし始めます
私はアプリを開発していますが、エラーの原因を理解したり見つけたりするのに非常に大きな問題があります。完全なコードは Github で入手できます: https://github.com/lordgreg/Sfen。問題のある行は、常に 608 行付近の startActivity(intent) です ( https://github.com/lordgreg/Sfen/blob/master/app/src/main/java/gpapez/sfen/BackgroundService.java )
エラーを再現する方法は次のとおりです。
- 新しいショートカット(ウィジェット)を作成する「アクション」を持つことができる新しいプロファイルを作成します-実際にはインテントをGson文字列として保存します(Uriのために(デ)シリアル化を使用する必要がありました)。
- このプロファイルを何度でも実行できます (クリックするとすべてのアクションが実行されます)。インテントは問題なく実行されます。
- 現在、特別な条件でトリガーされ、特定のプロファイルを実行する以外は何もしない「イベント」があります(プロファイルを再度クリックするのと同じです)。これは機能します。イベントの条件が満たされ、ブロードキャストEVENT_ENABLEDを送信し、受信者がそれを取得し、プロファイルをトリガーする機能を開始し、アクションを実行し、sendActivityがGsonから取得した意図で機能します。パーフェクトだ。
- アプリを閉じて再度開くと、問題が発生します。
- 次に、レシーバーがイベントを再実行するためのシグナルを送信します(これは、クリックすると機能し、プロファイルを手動でクリックすると機能します)。
エラーの一例を次に示します。
または別の:
これが発生すると、アプリが使用できなくなります。システム設定に移動して、アプリ自体のデータを消去する必要があります。その後、再実行してプロファイルを再度作成し、プロファイルを表示するイベントを作成して、このコードを実行するだけのショートカット アクションをトリガーできます。
エラーが表示される行
正確には:
その後、アプリを再度開こうとすると、常に上記の例外が発生します。ここにひねりがあります...クラッシュ後しばらく待つと(+ 1分)、問題なくアプリが再開され、次のクラッシュまですべてを開き続けることができます。
なぜこれが起こっているのか助けてください...ミステリーを見つけて解決する人に喜んで支払います(両方とも行のstartActivity(intent)につながる不正な引数例外とブロードキャストインテントの受信エラー)!私を助けてくれたことに感謝の気持ちを表すことができるのはそれだけです!
ありがとうございました!