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

私が代わりに正しい.jp2延長の.jpg拡張子を持つJPEG2000ファイルをアップロードしようとしたため、セグメンテーションフォールトが発生します。

これは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

関連する問題