web-dev-qa-db-ja.com

このdtraceエラーはどういう意味ですか?

実行時iotop -C 5 12 2010年後半のMacbookPro(10.6.7)で、このエラーが繰り返し発生します。

dtrace: error on enabled probe ID 5 (ID 19507: io:mach_kernel:buf_strategy:start): illegal operation in action #3 at DIF offset 0

これの原因は何ですか?どうすれば修正できますか?

16
Chris R

このブログ投稿 (詳細情報 ここ )によると、これはiTunesが原因であり、DTraceは「フィルタリング」するため、iTunesのDRMを破ろうとするために使用することはできません。 。

ITunesを終了すると、エラーが解決します。

7
Daniel Serodio

エラーはstderrに出力されており、次のようにコマンドを実行することでフィルターで除外できます。

Sudo iotop -C 5 12 2>/dev/null

これには、発生する可能性のある他のエラーを除外するという副作用があります。 iotopの出力が読みやすくなるという点で、これは問題のないトレードオフであることがわかりました。

残念ながら、エラーの原因はわかりません。検索しましたが、まだ何も見つかりませんでした。

9
David Ludwig

つまり、トレースしないように要求したプロセスをトレースしようとすると、エラーが表示されます。

このエラーは、技術的にはiTunesが原因ではなく、次のようなコードを使用してトレースを無効にしたプロセスが原因です。

ptrace(PT_DENY_ATTACH, 0, 0, 0);

このコードは、カーネルレベルでプロセスにフラグを設定し、プロセスのデバッグとトレースを防ぎます。

これを行う最もよく知られているアプリケーションは、たまたまこのAPIがDRMのために発明されたアプリケーションであるiTunesですが、APIは他のプロセスで利用できます。多くのサードパーティアプリケーションがこのAPIを使用しているのを見てきました。

もちろん、すべてのDRMと同様に、壊れることもあります。このアンチトレースおよびアンチデバッグ機能をバイパスするためのオプションは、デバッガーを使用してAPI呼び出しをスキップすることから、カーネル空間で機能にパッチを適用するカーネル拡張機能まで多岐にわたります。

5

https://unix.stackexchange.com/a/276219 から取得

これは、El Capitanとそのシステム整合性保護(csrutil status)これはdtraceの動作に影響を与える可能性があります。

潜在的な修正には、Macをリカバリモードで再起動することが含まれます(-R 起動時)、ターミナルで実行:

csrutil enable --without dtrace

SIPを有効にしますが、DTrace制限を無効にします(注:これは 文書化されていないパラメーター )を維持します。

または、SIPを完全に無効にする:

csrutil disable # Not recommended.

見る:

1
joeyhoer