当磁盘处于只读状态时,如何分析系统调用,strace输出是“总线错误”?

我们有硬盘的问题,使所有的挂载点只能读取。 dmesg输出:

 end_request: I/O error, dev sda, sector 15574609 sd 0:0:0:0: SCSI error: return code = 0x00040000 

我们要分析一个正在运行的程序,因为当他不能写入文件系统时它应该死掉。 所以,我们想用strace来debugging系统调用。

strace的输出是:

 Bus error 

似乎一些资源不可用的机器或一些低级别的错误。 在系统pipe理员修复磁盘之前,我被困在如何分析程序的问题上。

您的磁盘(可能实际上几乎可以肯定)正在死亡。 这听起来像你的系统pipe理员已经得出这个结论。
准备葬礼,穿上黑色的备份和执行恢复testing。


回复:巴士的错误 – 这个问题本应该立即致命。 这是相当于“WTF?”的信号,这是不可能的! ( 看到这个问题 – 他们正在谈论内存,但同样的事情可能会发生在磁盘或任何可寻址的组件)。 我不记得你是否可以捕获SIGBUS,但是如果你的程序是这样做的话,它不应该。
关于如何跟踪/debugging软件的更多问题应该通过StackOverflow或程序员进行询问。

听起来就像你的系统甚至无法加载执行跟踪所需的实用程序/库。

这里正确的是:

  • 修复磁盘(即从备份恢复等)
  • 让系统恢复到最佳状态
  • 以受控的方式正确testing您的程序(通过在适当的时间使文件系统只读)