4

私は組み込みプラットフォーム(アーキテクチャはSH4)で作業していますが、数分前にSIGABRTでプログラムがクラッシュしました。

幸い、私はgdbserverで実行していましたが、このシグナルによって中断されたスレッドには、次のスタックダンプがあります。

#0  0x2a7f1678 in raise () from /home/[user]/target/lib/libc.so.6
#1  0x2a7f2a4c in abort () from /home/[user]/target/lib/libc.so.6
#2  0x2a81ade0 in __libc_message () from /home/[user]/target/lib/libc.so.6
#3  0x2a81f3a8 in malloc_printerr () from /home/[user]/target/lib/libc.so.6
#4  0x2a8c3700 in _IO_wide_data_2 () from /home/[user]/target/lib/libc.so.6

ここで何が起こったのか知っていますか?悪いfree()?悪い削除?悪いmalloc?「_IO_wide_data_2」は何をすることになっていますか?どちらも理解できないmalloc_printerr()呼び出しが表示されます。

グーグルは私にこれに関して234の結果を与えます、しかしそれらのすべては単に彼らが彼らのバックトレースにその「機能」を持っているからです。

4

3 に答える 3

7

stderrワイド文字サポート用のストリームです。

さまざまな部分に分解できます。

  • _IO: 入出力。
  • wide_data:ワイドデータ
  • 2: 標準エラー

あなたも持っています。

_IO_wide_data_0: 標準入力 _IO_wide_data_1: 標準出力

それらは 2->1->0 として連鎖されます。

malloc_printerr()動的メモリ管理で何か問題が発生/キャッチされたときに、さまざまなエラーメッセージを出力するために使用されます。しかし、トレースがキャップされているように見えます (何かを削除しましたか?)。

stderr への書き込みで、メモリにないもの、破損したメモリ、…

または、stderr への書き込みの原因となる下位のスタック ポイントである可能性があります。

または…</p>

于 2012-04-22T10:54:13.067 に答える
0

GDB で実行中にこのエラーを再現できますか? ここにあるさまざまな「スタック」コマンドを使用して、より多くのスタック トレース情報を取得できます。

GDBチートシート

何が起こったのかを判断するために、いくつかのスタック フレームを上下に移動する必要がある場合があります。

于 2012-04-24T23:29:49.387 に答える