标签: swfmill

为什么Ruby只在我的系统上抛出Segmentation故障,而且只在这个Rails应用程序中?

我不确定如何正确调试这个但是尝试了一些不同的方法,这些方法已经缩短了时间,但没有解决问题.我办公室中至少有4个人可以在相同的机器上执行此代码,并且安装了相同版本的ruby和rubygems且没有错误.

这是我正在执行的代码:

status = Open4::popen4( "swfmill simple stdin stdout" ) do | pid, stdin, stdout, stderr |
  stdin.write( config )
  stdin.close
  bytes = stdout.read
  errors = stderr.read
end
Run Code Online (Sandbox Code Playgroud)

我在这条线路上遇到"总线错误":

errors = stderr.read
Run Code Online (Sandbox Code Playgroud)

如果我评论该行,我会在此行上收到"Segementation Fault":

bytes = stdout.read
Run Code Online (Sandbox Code Playgroud)

我显然使用Open4库并执行外部进程.这个外部进程在直接从终端执行时非常有效,并且当这个Ruby代码在这个特定的Rails应用程序之外运行时,即使在不同的,更简单的Rails应用程序中也是如此.

要重现错误,我只需执行我的特定测试方法,如下所示:

ruby test/unit/swf_generator_test.rb --name test_get_bytes
Run Code Online (Sandbox Code Playgroud)

我在配备Intel Core 2 Duo 2.53 GHz和8GB RAM的MacBook Pro上运行Snow Leopard Mac OS X 10.6.2(10C540).

ruby -v && gem -v
ruby 1.8.7 (2009-06-12 patchlevel 174) [i686-darwin10.2.0]
1.3.5
Run Code Online (Sandbox Code Playgroud)

我在GDB中执行了这段代码,发现我的libxml和libxslt库都安装不正确.我能够安装这两个库,现在GDB不再告诉我任何我认为有用的东西.以下是GDB的当前输出:

gdb ruby

GNU gdb 6.3.50-20050815 (Apple version gdb-1344) (Fri Jul  3 …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails swfmill segmentation-fault

14
推荐指数
2
解决办法
2万
查看次数

标签 统计

ruby ×1

ruby-on-rails ×1

segmentation-fault ×1

swfmill ×1