Ошибка сегментации Carrierwave Rmagick при неверном расширении фото - PullRequest
2 голосов
/ 03 июля 2011

Я получил ошибку сегментации, когда попытался загрузить изображение на свой сайт в 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?

Что еще более важно, можно ли запретить пользователям моего сайта инициировать эту ошибку сегментации, отправив изображение с неправильным расширением?

Спасибо!

Ответы [ 2 ]

3 голосов
/ 30 августа 2011

Как уже упоминалось в этом посте , вы можете просто запустить

brew install -f imagemagick --disable-openmp

или, если у вас уже установлена ​​программа imagemagick,

brew upgrade -f imagemagick --disable-openmp
1 голос
/ 03 июля 2011

Я сомневаюсь, что это будет единственной ошибкой.Вы можете использовать другой инструмент, например, «файл», чтобы проверить формат файла.

Также вам следует подумать о способе восстановления после сбоя ruby.Вы можете просто запустить дополнительный процесс в фоновом режиме.Но вы должны убедиться, что у вас есть дополнительные проверки, чтобы вы могли реагировать, когда кто-то пытается повторно вызвать сбой вашего программного обеспечения.В противном случае вы легко можете отказаться от обслуживания.

...