故意在Ruby 1.8.7下导致段错误

时间:2011-06-06 20:23:35

标签: ruby segmentation-fault

在MRI Ruby 1.8.7中故意导致段错误的最简单方法是什么?

4 个答案:

答案 0 :(得分:3)

您可以查看segfault4r(最近一次更新于2007年)。您必须手动下载并安装gem,因为它不能通过RubyGems获得。

答案 1 :(得分:1)

您可以编写一个错误的C模块来取消引用NULL指针。

答案 2 :(得分:1)

根据您的需求(和环境),您可以让它运行,找到解释器的进程ID并执行:

$ kill -s SIGSEGV $pid

我刚刚在OSX上尝试使用bash,并且它在 ed(1)(一个真正的文本编辑器)过程中工作。

您还可以在调试器中运行Ruby并手动将指针或两个设置为零。变量中的一个指针可以很好地完成。当然,您可能需要使用调试符号构建解释器,并且您需要了解有关解释器内部的一两件事。

答案 3 :(得分:1)

如果您针对特定的补丁级别执行此操作,请查看Ruby的bug tracker以查找在创建导致分段错误的补丁级别之后报告的错误。当您查看1.8.7时,您可能希望查看those categorized as Ruby 1.8

例如,对于我的Windows机器上的Ruby(1.9)版本,Thread.kill(nil)sufficient to cause a segfault,我认为它也适用于Ruby 1.8。