此dtrace错误是什么意思?


15

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

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

Answers:



9

错误正在输出到stderr,可以通过运行以下命令将其滤除:

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

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

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


1
那只是扫除地毯下的错误,并假装它们不存在!问题是问是什么原因导致了它们,以及如何解决它们,而不是“我如何忽略它们?”。
markhep

5

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

从技术上讲,该错误不是由iTunes引起的,而是由使用以下代码的禁用跟踪的过程引起的。

ptrace(PT_DENY_ATTACH, 0, 0, 0);

此代码在内核级别在进程上设置标志,从而防止调试和跟踪进程。

做到这一点的最著名的应用程序恰好是iTunes,该应用程序可能发明了该API的DRM,但该API可用于其他进程。我已经看到许多第三方应用程序使用此API。

当然,像所有DRM一样,它可以被破坏。绕过此反跟踪和反调试功能的选项包括使用调试器跳过对内核扩展的API调用,这些内核扩展会将功能修补到内核空间中。


1

取自/unix//a/276219

这可能与El Capitan及其系统完整性保护(csrutil status)有关,后者可能会影响dtrace行为。

可能的解决方法包括将Mac重新引导至恢复模式(- R在引导时),然后在终端中运行:

csrutil enable --without dtrace

保持启用SIP,但禁用DTrace限制(注意:这是未记录的参数)。

或通过以下方式完全禁用SIP:

csrutil disable # Not recommended.

看到:

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.