【问题标题】:Dirty CoW mitigation on CentOS 7.2 - semantic error: while resolving probe pointCentOS 7.2 上的 Dirty CoW 缓解 - 语义错误:在解析探测点时
【发布时间】:2017-03-04 18:15:19
【问题描述】:

我正在按照此处所述(在等待官方发行版内核时)在我的系统上实施临时补丁(非持久性):

https://bugzilla.redhat.com/show_bug.cgi?id=1384344#c13

我已经在写入脚本上测试了一个脏副本,目的是在我的系统上测试这个错误的解决方案,但请注意我遇到了一个语义错误并且这个错误在我的系统上仍然存在:

SuperUser Shell ~/> # stap -g -p 4 fix.stp 
semantic error: while resolving probe point: identifier 'syscall' at fix.stp:5:7
        source: probe syscall.ptrace {  // includes compat ptrace as well
                      ^

semantic error: no match

Pass 2: analysis failed.  [man error::pass2]
SuperUser Shell ~/>

用颜色(如果那是你的东西):

阅读本文:

https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/5/html/SystemTap_Beginners_Guide/errors.html

我看到一个简短的解释:

语义错误:探测点不匹配,同时解析探测点foo
无法解析事件/处理函数 foo 总而言之,出于各种原因。发生此错误时 脚本包含事件 kernel.function("blah"),而 blah 没有 存在。在某些情况下,该错误还可能意味着脚本包含 无效的内核文件名或源代码行号。

问题:

  • 这实质上是在说明无法识别syscall 内核函数,对吗?
  • 有没有人在 CentOS 7.x 上成功实施过这个临时修复?

感谢您的帮助

PS:对不起,如果这看起来有点像脚本小子(我还不完全理解这个热修复)。

【问题讨论】:

    标签: linux system-calls centos7 rhel7 dirtyread


    【解决方案1】:

    是的,我已经在 CentOS 7 上成功实施了这个临时缓解措施。

    如该 bugzilla 条目中的 comments 之一所述,您需要为内核安装 systemtap 和 debuginfo 才能使该缓解措施起作用。

    给出的命令是:

    yum install systemtap yum-utils
    debuginfo-install kernel-$(uname -r)
    

    根据您发布的内容,大概您已经拥有 systemtap,但您收到的错误表明您需要 debuginfo 包。上面的第二个命令应该安装正确的东西;您也可以从http://debuginfo.centos.org/ 手动获取 RPM(这就是我最终所做的)

    顺便说一句,使用 systemtap 的这种缓解措施并不是真正的解决方案,它只会使概念证明程序之一失败。这是值得做的,但不能替代真正的补丁内核。

    我不明白为什么 Red Hat 和 CentOS 还没有推出补丁内核包,而 Ubuntu 和其他公司几天前就已经推出了更新。什么是滞留?

    【讨论】:

    猜你喜欢
    • 2017-03-07
    • 1970-01-01
    • 2012-10-04
    • 1970-01-01
    • 2017-12-18
    • 2015-06-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多