2011-07-02 28 views
2

当我试图使用Carrierwave和Rmagick将图像上载到Heroku上的网站时,我遇到了分段错误。Carrierwave Rmagick在错误照片扩展上的分割错误

这是错误日志输出的一部分:

ruby: jpc_dec.c:1072: jpc_dec_tiledecode: Assertion `dec->numcomps == 3' failed. 
/app/.bundle/gems/ruby/1.9.1/gems/carrierwave-0.5.4/lib/carrierwave/processing/rmagick.rb:248: [BUG] Segmentation fault 
ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-linux] 

经调查,发生分段错误,因为我尝试了上传文件JPEG2000用.jpg延伸,而不是正确的.jp2扩展。

这是Rmagick的错误吗?

更重要的是,是否可以通过发送带有错误扩展名的图像来阻止我的网站用户触发此分段错误?

谢谢!

回答

1

我怀疑这将是它唯一的错误。 您可以使用其他工具,如'文件'来验证文件格式。

另外,你应该考虑一种方式,如果红宝石崩溃可以恢复。 您可以在后台运行额外的进程。但是您应该确保 您有额外的检查,以便您可以在有人试图重复崩溃软件时作出响应。否则,你很容易拒绝服务目标。

3

this post提到的,你可以简单地运行

brew install -f imagemagick --disable-openmp 

或者,如果你已经安装了ImageMagick的,

brew upgrade -f imagemagick --disable-openmp 
+0

我有安装它,我必须做到以下几点: '冲泡取消链接imagemagick'然后 'brew install --force imagemagick --disable-openmp' –

+0

我还必须在重新安装imagemagick后重新安装'rmagick' gem。 – raidfive