DTrace for Linux ustack() 操作中的无效地址

Posted

技术标签:

【中文标题】DTrace for Linux ustack() 操作中的无效地址【英文标题】:DTrace for Linux ustack() invalid address in action 【发布时间】:2013-03-28 08:03:03 【问题描述】:

当我使用 DTrace for Linux 运行以下 .d 脚本时:

#!/usr/sbin/dtrace -s
syscall::open:entry

    @[ustack()] = count();

我收到许多以下类型的错误:

dtrace: error on enabled probe ID 2 (ID 320864: syscall:x64:open:entry): invalid address (0xfffd) in action #2
dtrace: error on enabled probe ID 2 (ID 320864: syscall:x64:open:entry): invalid address (0xfffd) in action #2
dtrace: error on enabled probe ID 2 (ID 320864: syscall:x64:open:entry): invalid address (0xfffd) in action #2

我应该怎么做才能修复它们?

【问题讨论】:

【参考方案1】:

您应该尝试更高版本的 dtrace。我相信这已经解决了——由于编译器、发行版和 32 位与 64 位内核的不稳定,堆栈遍历代码必须不断被重写。

【讨论】:

谢谢,我同时切换到 Systemtap。我花了很长时间才正确设置,但现在可以正常工作了。 我仍然收到最新 dtrace4linux 的错误。是否有一些已知可以工作的特定编译器/发行版/内核组合? 我在 ubuntu 上也遇到了与 master 构建相同的错误。如何提供更多信息来查明错误?

以上是关于DTrace for Linux ustack() 操作中的无效地址的主要内容,如果未能解决你的问题,请参考以下文章

与命令行相比,来自 C 的 Dtrace 不会产生相同的分析结果

DTrace patch for Python 2.7.x and 3.x

Linux 上 DTrace 的替代方案是啥? [关闭]

在 Oracle Linux 上使用 DTrace

在 Linux 中修复 dtrace 中的“无符号类型信息”?

在Oracle Linux上安装dtrace