私はsnprintf
を実行しており、segフォルトが発生しています。セグメンテーションフォルトのスタックトレースを理解する
コアファイルをgdbにロードしたとき、次のようになります。gdb my_executable core
;そして、バックトレースを取得するにはbt
をした、私は次のようました:
Program terminated with signal 11, Segmentation fault.
#0 0x88207fc2 in memcpy() from /usr/lib/libc.so.6
(gdb) bt
#0 0x88207fc2 in memcpy() from /usr/lib/libc.so.6
#1 0x88205eb6 in __sfvwrite() from /usr/lib/libc.so.6
#2 0x881fbc95 in strchr() from /usr/lib/libc.so.6
#3 0xbfbe6c14 in ??()
#4 0xbfbe69d8 in ??()
#5 0x881ed91e in localeconv() from /usr/lib/libc.so.6
#6 0x881fec05 in __vfprintf() from /usr/lib/libc.so.6
#7 0x881f7d80 in snprintf() from /usr/lib/libc.so.6
#8 0x08052b64 in my_function (files=0xbfbed710, filename=<value optimized out>) at myfile.c:1102
#9 0x08053bfb in main (argc=4, argv=0xbfbedd90) at myfile.c:225
を私はワンセグ障害の場合には、そのようなスタックを何回も見たが、正しく理解していませんでした。
トレースでコールを調べるだけで、何がうまくいかないのかわかりますか?
注:コードを要求しないでください。私の動機は、コードに関係なく、このようなスタックトレースが何を意味するのかを理解するだけです。私はトップの "memcpy"が失敗しているのを見る。私はこの状況でいつ起こるのか理解したい。
「よくある理由」に感謝します。私はそのようなセグメンテーションを引き起こす可能性がある事柄の網羅的なリストを探しています。あなたの助けを感謝:) – hari