- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我们的是基于 PowerPC 的嵌入式系统,运行 Linux。我们遇到了一个随机的 SIGILL 崩溃,这种崩溃在各种应用程序中都会出现。崩溃的根本原因是要执行的指令归零。这表明驻留在内存中的文本段已损坏。由于文本段以只读方式加载,因此应用程序无法破坏它。所以我怀疑是某些常见的子系统(DMA?)导致了这种损坏。由于问题需要几天时间才能重现(由于 SIGILL 而导致崩溃),因此调查变得越来越困难。因此,首先我想知道任何应用程序的文本段是否以及何时已损坏。我查看了堆栈跟踪和所有指针、寄存器都是正确的。
你们有什么建议吗?
一些信息:
Linux 3.12.19-rt30 #1 SMP Fri Mar 11 01:31:24 IST 2016 ppc64 GNU/Linux
(gdb) BT
xxx 中的 0 0x10457dc0
反汇编输出:
=> 0x10457dc0 <+80>: 先生 r1,r11
0x10457dc4 <+84>: blr
地址 0x10457dc0 处预期的指令:0x7d615b78
捕获 SIGILL 后发现的指令 0x10457dc0: 0x00000000
(gdb) 维护信息部分
0x10006c60->0x00006c60 处的 0x106cecac:.text ALLOC LOAD READONLY 代码有_CONTENTS
预期(来自应用程序二进制文件):
(gdb) x/32 0x10457da0
0x10457da0 : 0x913e0000 0x4bff4f5d 0x397f0020 0x800b0004
0x10457db0 : 0x83abfff4 0x83cbfff8 0x7c0803a6 0x83ebfffc
0x10457dc0 : 0x7d615b78 0x4e800020 0x7c7d1b78 0x7fc3f378
0x10457dd0 : 0x4bcd8be5 0x7fa3eb78 0x4857e109 0x9421fff0
实际(在处理 SIGILL 并转储附近的内存位置之后):
错误指令地址:0x10457dc0
0x10457da0 : 0x913E0000
0x10457db0 : 0x83ABFFF4
=> 0x10457dc0 : 0x00000000
0x10457dd0 : 0x4BCD8BE5
0x10457de0 : 0x93E1000C
编辑:
我们掌握的一个线索是损坏总是发生在以 0xdc0 结尾的偏移处。
例如
错误指令地址:0x10653dc0 << 在捕获 SIGILL 后由我们的应用程序打印
错误指令地址:0x1000ddc0 << 在捕获 SIGILL 后由我们的应用程序打印
flash_erase[8557]:0fed6dc0 nip 0fed6dc0 lr 0fed6dac 代码 30001 处未处理的信号 4
nandwrite[8561]:0fed6dc0 nip 0fed6dc0 lr 0fed6dac 代码 30001 处未处理的信号 4
awk[4448]:0fe09dc0 nip 0fe09dc0 lr 0fe09dbc 代码 30001 处未处理的信号 4
awk[16002]:0fe09dc0 nip 0fe09dc0 lr 0fe09dbc 代码 30001 处未处理的信号 4
getStats[20670]:0fecfdc0 nip 0fecfdc0 lr 0fecfdbc 代码 30001 处未处理的信号 4
expr[27923]:0fe74dc0 nip 0fe74dc0 lr 0fe74dc0 代码 30001 处未处理的信号 4
编辑 2:另一个线索是损坏总是发生在物理帧编号 0x00a4d 处。我假设 PAGE_SIZE 为 4096,这将转换为物理地址 0x00A4DDC0。我们怀疑我们的几个内核驱动程序并进一步调查。有没有更好的想法(比如放置硬件观察点)可以更有效?下面建议的 KASAN 怎么样?
感谢任何帮助。谢谢。
最佳答案
1.) 文本段是 RO,但可以通过 mprotect 更改权限,你可以检查一下,如果你认为这是可能的
2.) 如果是内核问题:
3.) 硬件。我认为,您的问题看起来像是硬件问题(RAM 问题)。
关于c++ - 调试讨厌的 SIGILL 崩溃 : Text Segment corruption,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39010931/
我看到过关于此的类似帖子,但无法让 Netbeans 在正常工作时停止在我的代码中显示错误消息 "Unable to resolve identifier nullptr"。我已正确启用 C++11,
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我有一个 cucumber 步骤,最近开始失败时 已添加到我的布局中。如果我拿 出来,我的测试都通过了。当我把它放回去时,使用 WebRat 提供的 click_link 方法
我一直致力于创建独立于 .Net 客户端运行的 WCF 服务。感谢 Google 和 StackOverflow,我已经能够创建简单的 xml 和 json 服务,而无需 Soap 包装器和一堆我不需
有人可以向我解释一下 python 在 ubuntu 9.04 中发生了什么吗? 我正在尝试启动 virtualenv,而 --no-site-packages 标志似乎对 ubuntu 没有任何作用
我是一名优秀的程序员,十分优秀!