フラグGCC -fstack-protectorフラグはスタックカナリアを使用してスタックオーバーフロー保護を可能にします。近年、このフラグをデフォルトで使用することがより顕著になりました。
パッケージが-fstack-protectorにコンパイルされ、プログラムでバッファがオーバーフローすると、次のエラーが発生する可能性があります。
*** buffer overflow detected ***: /xxx/xxx terminated
しかし、これらのエラーメッセージの責任は「誰」にありますか?このメッセージはどこに記録されますか? syslogデーモンはこれらのメッセージを収集しますか?
ベストアンサー1
スタックスマッシングはインストルメンテーションによって行われ、libssp
これの一部ですgcc
。それとても頑張ってメッセージは端末に出力され、障害が発生した場合はシステムログにのみ記録されます。したがって、実際には、デーモンログとGUIアプリケーションのログからバッファオーバーフローメッセージを見ることができます。
メッセージを出力したら、libssp
アプリケーションの競合を含むさまざまな終了方法を試してください。これは例外出口ロガーの1つでキャプチャできますが、これは保証されません。