GNU/Linux >> Linux の 問題 >  >> Linux

Strace / ptraceはプログラムをクラッシュさせる可能性がありますか?

最近、私は誰かとstraceについて話し合っていました。彼らは、ネットワークソケットなどを作成しているのと同じように、実行中のプロセスをstraceした場合にどうなるかを尋ねていました。これにより、プログラムが予期しない方法でクラッシュする可能性がありますか?

straceで使用されるsyscallであるptraceについて私が読んだことから、スレッドをデバッグしているだけでは、そのようなことは起こらないはずです。システムコールが呼び出されるたびにプロセスは停止しますが、後で再開する必要があり、賢明ではありません。シグナルは実行されていないときにキューに入れられるので、syscalls / sockets/listenでも同様のことが起こると思います。

straceのコンテキストで使用されるptraceは、奇妙なプロセスクラッシュを引き起こす可能性がありますか?

承認された回答:

いいえstrace プログラムのクラッシュを引き起こしてはなりません–

除く このやや珍しいケースの場合:

実行のタイミングに依存するバグがある場合 、またはランタイムメモリの場所

この種の「特異なバグ」を引き起こす可能性があります 」–しかし、非常にまれです。この種のバグはまれであり、straceまたは他のインストルメンテーションの下でのみトリガーする必要があるためです。
そして、特異なバグを見つけた場合、それはしばしば良いことです。

ptrace()について – syscall –それがstrace 内部で行うと思うので、似ています。 strace以上のことができます ptrace()を使用するときにできます 直接。

あなたの例はまさにこの種のバグです:

この例では、strace ネットワーク接続を作成する手順のタイミングを変更します。それが問題になる場合、それは「発生するのを待っている問題」でした–実行のタイミングは絶えず変化します。 straceを使用 、 あともうちょい。ただし、プログラムの開始など、他のアプリケーションではタイミングがさらに変更されている可能性があります。


Linux
  1. キャラクタードライバを開いて待つだけのシェルプログラム?

  2. Linux でプログラムの実行をデバッグするための 7 つの Strace の例

  3. メイン関数が返したものを取得するにはどうすればよいですか?

  1. SIGHUP が生成される原因は何ですか?

  2. プログラムは独自の elf セクションを読み取ることができますか?

  3. 通常のデータ CD のように CD Audio を dd できないのはなぜですか?

  1. updatedb を無効にすることはできますか?

  2. フォーク爆弾でシステムをクラッシュできないのはなぜですか?

  3. シグナル 11 の原因は何ですか?