実行時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
これの原因は何ですか?どうすれば修正できますか?
エラーはstderrに出力されており、次のようにコマンドを実行することでフィルターで除外できます。
Sudo iotop -C 5 12 2>/dev/null
これには、発生する可能性のある他のエラーを除外するという副作用があります。 iotopの出力が読みやすくなるという点で、これは問題のないトレードオフであることがわかりました。
残念ながら、エラーの原因はわかりません。検索しましたが、まだ何も見つかりませんでした。
つまり、トレースしないように要求したプロセスをトレースしようとすると、エラーが表示されます。
このエラーは、技術的にはiTunesが原因ではなく、次のようなコードを使用してトレースを無効にしたプロセスが原因です。
ptrace(PT_DENY_ATTACH, 0, 0, 0);
このコードは、カーネルレベルでプロセスにフラグを設定し、プロセスのデバッグとトレースを防ぎます。
これを行う最もよく知られているアプリケーションは、たまたまこのAPIがDRMのために発明されたアプリケーションであるiTunesですが、APIは他のプロセスで利用できます。多くのサードパーティアプリケーションがこのAPIを使用しているのを見てきました。
もちろん、すべてのDRMと同様に、壊れることもあります。このアンチトレースおよびアンチデバッグ機能をバイパスするためのオプションは、デバッガーを使用してAPI呼び出しをスキップすることから、カーネル空間で機能にパッチを適用するカーネル拡張機能まで多岐にわたります。
https://unix.stackexchange.com/a/276219 から取得
これは、El Capitanとそのシステム整合性保護(
csrutil status
)これはdtrace
の動作に影響を与える可能性があります。潜在的な修正には、Macをリカバリモードで再起動することが含まれます(⌘-R 起動時)、ターミナルで実行:
csrutil enable --without dtrace
SIPを有効にしますが、DTrace制限を無効にします(注:これは 文書化されていないパラメーター )を維持します。
または、SIPを完全に無効にする:
csrutil disable # Not recommended.
見る: