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