2011-07-02 38 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