这个 dtrace 错误是什么意思?

Chr*_*s R 16 mac troubleshooting

iotop -C 5 122010 年末的 Macbook Pro (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
Run Code Online (Sandbox Code Playgroud)

这是什么原因,我该如何解决?

小智 9

错误正在输出到 stderr,并且可以通过运行以下命令来过滤掉:

sudo iotop -C 5 12 2>/dev/null
Run Code Online (Sandbox Code Playgroud)

这确实具有过滤掉可能出现的任何其他错误的副作用。我发现这是一个不错的权衡,因为它使我的 iotop 输出可读。

不幸的是,我不确定错误的原因是什么。我已经搜索过,但到目前为止还没有找到任何东西。


Dan*_*dio 7

根据这篇博客文章这里有更多信息),它是由 iTunes 引起的,它被 DTrace “过滤”,因此它不能用来尝试破解 iTunes 的 DRM。

退出 iTunes 可解决该错误。

  • 即使 iTunes 未运行,我也会收到此错误。 (15认同)

Ale*_*ara 5

简而言之,当尝试跟踪请求不被跟踪的进程时会显示错误。

该错误在技术上不是由 iTunes 引起的,而是由使用如下代码禁用跟踪的进程引起的。

ptrace(PT_DENY_ATTACH, 0, 0, 0);
Run Code Online (Sandbox Code Playgroud)

此代码在内核级别的进程上设置了一个标志,以防止对进程进行调试和跟踪。

执行此操作的最著名的应用程序恰好是 iTunes,该应用程序的 DRM 此 API 可能是为其发明的,但该 API 可用于其他进程。我已经看到许多 3rd 方应用程序使用这个 API。

当然,像所有 DRM 一样,它可以被破解。绕过此反跟踪和反调试功能的选项范围从使用调试器跳过 API 调用到在内核空间中修补该功能的内核扩展。