Pourquoi est-ce RMagick appel de générer une erreur de segmentation?
J'ai été frapper ma tête contre le mur pour la meilleure partie de une heure à essayer de comprendre ce qui ne va pas ici, et je suis sûr (ou plutôt espère) c'est quelque chose d'assez évident, je suis surplombant. Je suis l'aide de Ruby 1.9.1, Sinatra 1.0, et RMagick 2.13.1. ImageMagick et RMagick sont correctement installés et fonctionnels—j'ai réussi à manipuler et d'images enregistrées à partir de la cisr.
La partie correspondante du tableau params (modifications de mise en forme pour la lisibilité):
{"admin_user_new_image_file"=>
{
:filename=>"freddie-on-shetland-pony.png",
:type=>"image/png",
:name=>"admin_user_new_image_file",
:tempfile=>#<File:/var/folders/a7/a7pO5jMcGLCww9XBGRvWfE+++TI/-Tmp-/RackMultipart20100514-20700-o2tkqu-0>,
:head=>"Content-Disposition: form-data; name=\"admin_user_new_image_file\"; filename=\"freddie-on-shetland-pony.png\"\r\nContent-Type: image/png\r\n"
}
}
Le code:
post "/admin/user/:account_name/image/new/" do
if params[:admin_user_new_image_file][:tempfile]
thumbnail = Magick::Image.read("png:"+params[:admin_user_new_image_file][:tempfile].path).first
end
end
L'erreur (la ligne 229 est la ligne commençant par "vignette = ":
config.ru:229: [BUG] Segmentation fault
ruby 1.9.1p376 (2009-12-07 revision 26041) [i386-darwin10.3.0]
-- control frame ----------
c:0042 p:---- s:0196 b:0196 l:000195 d:000195 CFUNC :read
c:0041 p:0121 s:0192 b:0192 l:001ab8 d:000191 LAMBDA config.ru:229
c:0040 p:---- s:0189 b:0189 l:000188 d:000188 FINISH
c:0039 p:---- s:0187 b:0187 l:000186 d:000186 CFUNC :call
c:0038 p:0018 s:0184 b:0184 l:001d78 d:000183 BLOCK /usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:865
c:0037 p:---- s:0182 b:0182 l:000181 d:000181 FINISH
c:0036 p:---- s:0180 b:0180 l:000179 d:000179 CFUNC :instance_eval
c:0035 p:0016 s:0177 b:0175 l:000174 d:000174 METHOD /usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:521
c:0034 p:0024 s:0171 b:0171 l:000148 d:000170 BLOCK /usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:500
c:0033 p:---- s:0169 b:0169 l:000168 d:000168 FINISH
c:0032 p:---- s:0167 b:0167 l:000166 d:000166 CFUNC :catch
c:0031 p:0140 s:0163 b:0163 l:000148 d:000162 BLOCK /usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:497
c:0030 p:---- s:0154 b:0154 l:000153 d:000153 FINISH
c:0029 p:---- s:0152 b:0152 l:000151 d:000151 CFUNC :each
c:0028 p:0073 s:0149 b:0149 l:000148 d:000148 METHOD /usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:476
c:0027 p:0076 s:0141 b:0141 l:000140 d:000140 METHOD /usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:601
c:0026 p:0009 s:0137 b:0137 l:000138 d:000136 BLOCK /usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:411
c:0025 p:---- s:0135 b:0135 l:000134 d:000134 FINISH
c:0024 p:---- s:0133 b:0133 l:000132 d:000132 CFUNC :instance_eval
c:0023 p:0012 s:0130 b:0130 l:000121 d:000129 BLOCK /usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:566
c:0022 p:---- s:0128 b:0128 l:000127 d:000127 FINISH
c:0021 p:---- s:0126 b:0126 l:000125 d:000125 CFUNC :catch
c:0020 p:0013 s:0122 b:0122 l:000121 d:000121 METHOD /usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:566
c:0019 p:0098 s:0115 b:0115 l:000138 d:000138 METHOD /usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:411
c:0018 p:0019 s:0108 b:0108 l:000107 d:000107 METHOD /usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:399
c:0017 p:0014 s:0104 b:0104 l:000103 d:000103 METHOD /usr/local/lib/ruby/gems/1.9.1/gems/rack-1.1.0/lib/rack/showexceptions.rb:24
c:0016 p:0150 s:0098 b:0098 l:000097 d:000097 METHOD /usr/local/lib/ruby/gems/1.9.1/gems/rack-1.1.0/lib/rack/methodoverride.rb:24
c:0015 p:0031 s:0092 b:0092 l:000091 d:000091 METHOD /usr/local/lib/ruby/gems/1.9.1/gems/rack-1.1.0/lib/rack/commonlogger.rb:18
c:0014 p:0018 s:0084 b:0084 l:002080 d:000083 BLOCK /usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:979
c:0013 p:0032 s:0082 b:0082 l:000081 d:000081 METHOD /usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:1005
c:0012 p:0011 s:0078 b:0078 l:002080 d:002080 METHOD /usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:979
c:0011 p:0100 s:0074 b:0074 l:000ff0 d:000ff0 METHOD /usr/local/lib/ruby/gems/1.9.1/gems/rack-1.1.0/lib/rack/lint.rb:47
c:0010 p:0022 s:0068 b:0068 l:000067 d:000067 METHOD /usr/local/lib/ruby/gems/1.9.1/gems/rack-1.1.0/lib/rack/lint.rb:35
c:0009 p:0014 s:0064 b:0064 l:000063 d:000063 METHOD /usr/local/lib/ruby/gems/1.9.1/gems/rack-1.1.0/lib/rack/showexceptions.rb:24
c:0008 p:0031 s:0058 b:0058 l:000057 d:000057 METHOD /usr/local/lib/ruby/gems/1.9.1/gems/rack-1.1.0/lib/rack/commonlogger.rb:18
c:0007 p:0014 s:0050 b:0050 l:000049 d:000049 METHOD /usr/local/lib/ruby/gems/1.9.1/gems/rack-1.1.0/lib/rack/content_length.rb:13
c:0006 p:0320 s:0042 b:0042 l:000041 d:000041 METHOD /usr/local/lib/ruby/gems/1.9.1/gems/rack-1.1.0/lib/rack/handler/webrick.rb:48
c:0005 p:0256 s:0030 b:0030 l:000029 d:000029 METHOD /usr/local/lib/ruby/1.9.1/webrick/httpserver.rb:111
c:0004 p:0382 s:0020 b:0020 l:000019 d:000019 METHOD /usr/local/lib/ruby/1.9.1/webrick/httpserver.rb:70
c:0003 p:0123 s:0009 b:0009 l:000bc8 d:000008 BLOCK /usr/local/lib/ruby/1.9.1/webrick/server.rb:183
c:0002 p:---- s:0004 b:0004 l:000003 d:000003 FINISH
c:0001 p:---- s:0002 b:0002 l:000001 d:000001 TOP
---------------------------
-- Ruby level backtrace information-----------------------------------------
config.ru:229:in `read'
config.ru:229:in `block (2 levels) in <main>'
/usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:865:in `call'
/usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:865:in `block in route'
/usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:521:in `instance_eval'
/usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:521:in `route_eval'
/usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:500:in `block (2 levels) in route!'
/usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:497:in `catch'
/usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:497:in `block in route!'
/usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:476:in `each'
/usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:476:in `route!'
/usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:601:in `dispatch!'
/usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:411:in `block in call!'
/usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:566:in `instance_eval'
/usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:566:in `block in invoke'
/usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:566:in `catch'
/usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:566:in `invoke'
/usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:411:in `call!'
/usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:399:in `call'
/usr/local/lib/ruby/gems/1.9.1/gems/rack-1.1.0/lib/rack/showexceptions.rb:24:in `call'
/usr/local/lib/ruby/gems/1.9.1/gems/rack-1.1.0/lib/rack/methodoverride.rb:24:in `call'
/usr/local/lib/ruby/gems/1.9.1/gems/rack-1.1.0/lib/rack/commonlogger.rb:18:in `call'
/usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:979:in `block in call'
/usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:1005:in `synchronize'
/usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:979:in `call'
/usr/local/lib/ruby/gems/1.9.1/gems/rack-1.1.0/lib/rack/lint.rb:47:in `_call'
/usr/local/lib/ruby/gems/1.9.1/gems/rack-1.1.0/lib/rack/lint.rb:35:in `call'
/usr/local/lib/ruby/gems/1.9.1/gems/rack-1.1.0/lib/rack/showexceptions.rb:24:in `call'
/usr/local/lib/ruby/gems/1.9.1/gems/rack-1.1.0/lib/rack/commonlogger.rb:18:in `call'
/usr/local/lib/ruby/gems/1.9.1/gems/rack-1.1.0/lib/rack/content_length.rb:13:in `call'
/usr/local/lib/ruby/gems/1.9.1/gems/rack-1.1.0/lib/rack/handler/webrick.rb:48:in `service'
/usr/local/lib/ruby/1.9.1/webrick/httpserver.rb:111:in `service'
/usr/local/lib/ruby/1.9.1/webrick/httpserver.rb:70:in `run'
/usr/local/lib/ruby/1.9.1/webrick/server.rb:183:in `block in start_thread'
-- C level backtrace information -------------------------------------------
0x10010cd8d 0 libruby.dylib 0x000000010010cd8d rb_vm_bugreport + 77
0x10002b184 1 libruby.dylib 0x000000010002b184 report_bug + 260
0x10002b318 2 libruby.dylib 0x000000010002b318 rb_bug + 200
0x1000b7124 3 libruby.dylib 0x00000001000b7124 sigsegv + 132
0x7fff8301c80a 4 libSystem.B.dylib 0x00007fff8301c80a _sigtramp + 26
0x1032313ac 5 libMagickCore.3.dylib 0x00000001032313ac Splay + 300
0x103119245 6 libMagickCore.3.dylib 0x0000000103119245 AcquirePixelCache + 325
0x1031cb317 7 libMagickCore.3.dylib 0x00000001031cb317 AcquireImage + 375
0x10333035b 8 libMagickCore.3.dylib 0x000000010333035b ReadPNGImage + 155
0x1031418fd 9 libMagickCore.3.dylib 0x00000001031418fd ReadImage + 2221
0x101f1b72b 10 RMagick2.bundle 0x0000000101f1b72b rd_image + 339
0x101f1b59b 11 RMagick2.bundle 0x0000000101f1b59b Image_read + 36
0x1000fd0e4 12 libruby.dylib 0x00000001000fd0e4 vm_call_cfunc + 340
0x1000fe9b0 13 libruby.dylib 0x00000001000fe9b0 vm_call_method + 896
0x1000ff8fc 14 libruby.dylib 0x00000001000ff8fc vm_exec_core + 3180
0x100104b93 15 libruby.dylib 0x0000000100104b93 vm_exec + 1203
0x100106643 16 libruby.dylib 0x0000000100106643 rb_vm_invoke_proc + 691
0x100106ccd 17 libruby.dylib 0x0000000100106ccd vm_call0 + 1085
0x1000317c6 18 libruby.dylib 0x00000001000317c6 rb_method_call + 406
0x1000fd0e4 19 libruby.dylib 0x00000001000fd0e4 vm_call_cfunc + 340
0x1000fe9b0 20 libruby.dylib 0x00000001000fe9b0 vm_call_method + 896
0x1000ff8fc 21 libruby.dylib 0x00000001000ff8fc vm_exec_core + 3180
0x100104b93 22 libruby.dylib 0x0000000100104b93 vm_exec + 1203
0x100105ce6 23 libruby.dylib 0x0000000100105ce6 yield_under + 710
0x100106188 24 libruby.dylib 0x0000000100106188 specific_eval + 72
0x1000fd0e4 25 libruby.dylib 0x00000001000fd0e4 vm_call_cfunc + 340
0x1000fe9b0 26 libruby.dylib 0x00000001000fe9b0 vm_call_method + 896
0x1000ff8fc 27 libruby.dylib 0x00000001000ff8fc vm_exec_core + 3180
0x100104b93 28 libruby.dylib 0x0000000100104b93 vm_exec + 1203
0x10010b6bf 29 libruby.dylib 0x000000010010b6bf rb_f_catch + 639
0x1000fd0e4 30 libruby.dylib 0x00000001000fd0e4 vm_call_cfunc + 340
0x1000fe9b0 31 libruby.dylib 0x00000001000fe9b0 vm_call_method + 896
0x1000ff8fc 32 libruby.dylib 0x00000001000ff8fc vm_exec_core + 3180
0x100104b93 33 libruby.dylib 0x0000000100104b93 vm_exec + 1203
0x10010aac9 34 libruby.dylib 0x000000010010aac9 rb_yield + 505
0x100007902 35 libruby.dylib 0x0000000100007902 rb_ary_each + 82
0x1000fd0e4 36 libruby.dylib 0x00000001000fd0e4 vm_call_cfunc + 340
0x1000fe9b0 37 libruby.dylib 0x00000001000fe9b0 vm_call_method + 896
0x1000ff8fc 38 libruby.dylib 0x00000001000ff8fc vm_exec_core + 3180
0x100104b93 39 libruby.dylib 0x0000000100104b93 vm_exec + 1203
0x100105ce6 40 libruby.dylib 0x0000000100105ce6 yield_under + 710
0x100106188 41 libruby.dylib 0x0000000100106188 specific_eval + 72
0x1000fd0e4 42 libruby.dylib 0x00000001000fd0e4 vm_call_cfunc + 340
0x1000fe9b0 43 libruby.dylib 0x00000001000fe9b0 vm_call_method + 896
0x1000ff8fc 44 libruby.dylib 0x00000001000ff8fc vm_exec_core + 3180
0x100104b93 45 libruby.dylib 0x0000000100104b93 vm_exec + 1203
0x10010b6bf 46 libruby.dylib 0x000000010010b6bf rb_f_catch + 639
0x1000fd0e4 47 libruby.dylib 0x00000001000fd0e4 vm_call_cfunc + 340
0x1000fe9b0 48 libruby.dylib 0x00000001000fe9b0 vm_call_method + 896
0x1000ff8fc 49 libruby.dylib 0x00000001000ff8fc vm_exec_core + 3180
0x100104b93 50 libruby.dylib 0x0000000100104b93 vm_exec + 1203
0x100106643 51 libruby.dylib 0x0000000100106643 rb_vm_invoke_proc + 691
0x100111803 52 libruby.dylib 0x0000000100111803 thread_start_func_2 + 835
0x100111921 53 libruby.dylib 0x0000000100111921 thread_start_func_1 + 17
0x7fff82ff58b6 54 libSystem.B.dylib 0x00007fff82ff58b6 _pthread_start + 331
0x7fff82ff5769 55 libSystem.B.dylib 0x00007fff82ff5769 thread_start + 13
[NOTE]
You may encounter a bug of Ruby interpreter. Bug reports are welcome.
For details: http://www.ruby-lang.org/bugreport.html
Abort trap
Quelqu'un a une idée de ce qui se passe? Merci!
- J'ai peut-être confus, mais je suis un peu surpris, il fonctionne à tous. N'est pas le signe # entraîner le reste de la "tempfile:" pour devenir un commentaire? On dirait que vous êtes l'attribution rien à la tempvalue. Est-il possible de Ruby 1.8 et 1.9 processus de la "#<...>" combinaison différemment?
- Je peux confirmer cela arrive aussi sur 1.9.2-rc1 et rc2.
- Ce premier extrait de code en question est probablement le résultat d'une
logger.debug
et dans ce cas, la syntaxe#<File:...>
est juste de préciser que la valeur de la:tempfile
clé est une instance deFile
. Pensez-y de cette façon: si c'était un vrai commentaire puis le hachage décrit serait une erreur de syntaxe 🙂
Vous devez vous connecter pour publier un commentaire.
Étendre sur Matthieu de Savage commentaire, ce faire:
et il commence à travailler à nouveau. Pas besoin d'éditer les fichiers. (Je ne suis pas sûr si c'est ce qu'il a fait de dire ou s'il dit supprimer le drapeau, mais la ci-dessus homebrew commande fonctionne pour moi sur OSX 10.6)
Si vous avez déjà installé imagemagick puis
brew upgrade -f
plus réinstalle, de sorte que vous devez d'abord la désinstaller.)J'ai eu un problème très similaire sur OS X 10.6.7 l'exécution de Ruby 1.9.2p180.
De s'étendre sur les Cendres de Berlin commentaire, si vous utilisez le gestionnaire de paquets homebrew, vous devez désinstaller le package imagemagick et aussi enlever le cache ainsi, avant qu'il fonctionne.
Désinstaller imagemagick:
Supprimer le cache:
Puis ré-installer le paquet avec ce drapeau:
Pour ceux qui utilisent MacPorts, ImageMagick 6.6.5 et Ruby 1.9.2.
port uninstall ImageMagick
port edit ImageMagick
--disable-openmp
àconfigure.args
(près de la ligne 100)port install ImageMagick
Fonctionné pour moi 🙂
j'ai eu un problème similaire, à l'aide de rails 3 avec carrierwave sur os x 10.6 et ruby 1.9.2, aussi, s'est écrasé dans un appel à lire, à chaque fois, une image se devait d'être redimensionnée. faire:
résolu le problème pour moi.
Le blocage peut être dû à l'accès à ImageMagick sur un fil sous OSX MacPorts.
Voir post.
--disable-openmp
(ligne 58 sur mon système), puis installé, fixé à la!Pas une réponse, juste mon expérience:
J'ai aussi tombé sur ce problème dans un de mes propres projets. J'ai ce problème sur os x (snow leopard) à l'aide de ruby 1.9.2-p0, et ruby 1.9.2-p136.
Ce qui était particulièrement déroutant pour moi c'est que je peux lire dans une image à l'aide de rmagick via la console rails. Mais quand j'ai frappé exactement la même ligne à partir de mon application rails, il souffle de la même façon que décrit ci-dessus.
Reconstruction imagemagick via homebrew comme indiqué ci-dessus n'était pas assez pour moi. J'ai également dû supprimer le rmagick gem et de reconstruire via bundle.
Si vous avez déjà installé imagemagick avec brew, utilisez ceci:
Mise à JOUR: Ce n'est pas vraiment une vraie réponse en soi (je suis toujours de voir le même problème en IRM 1.9.1), mais j'ai utilisé RVM pour obtenir mon IRM 1.8.7 d'installation et de pierres précieuses à jour et essayé de courir, et tout fonctionne parfaitement. Je suppose que le problème est que RMagick n'est pas encore tout à fait compatible avec 1.9.1 encore, bien que la documentation fait spécifiquement mention de Ruby 1.9 soutien.
Vu le même problème après la mise à niveau ImageMagick sur une machine Linux. Il y a encore quelques notes ici. Je soupçonne certains d'incompatibilité de ImageMagick bibliothèques et lié gems ruby (qui est en accord avec tous les commentaires précédents. Découvrez ce fil similaire à rubyforge. http://rubyforge.org/forum/forum.php?thread_id=48036&forum_id=33
Ma solution a été de vider RMagick en faveur de MojoMagick - un très maigre de l'API ruby qui n'a pas de lien pour ImageMagick bibliothèques, mais utilise simplement la console binaires.
Il est disponible ici : http://www.misuse.org/science/2008/01/30/mojomagick-ruby-image-library-for-imagemagick/
J'ai construit un bijou et ajouté redimensionner à remplir avec de la récolte de la fonctionnalité qui est disponible sur github https://github.com/bunnymatic/mojo_magick
J'ai essayé CaptainPete de MacPorts solution. Il construit 6.6.6-0 et avait toujours le même problème. De commutation de brassage afin de faire le build a fait le tour. Notez que brasser construit 6.6.4-5. C'est possible, il y a plusieurs bugs ou un nouveau bug dans 6.6.6 qui provoque des problèmes similaires se produisent.
Aucune de ces réponses, il fixe dans mon cas.
Après l'enquête plus loin, j'ai trouvé que j'étais appel
.resample
sur un 0.02 dpi de l'image (je tire les images à partir d'un 3ème partie de l'API, donc je n'avais aucune idée). C'était même ce qui incite un "disque presque plein" message d'alerte après la faute de segmentation d'erreur apparaîtra.J'ai résolu le même message d'erreur (après plusieurs essais) en déplaçant la " gem "pg" en ligne " dans le gemfile ci-dessous le brouillard gem avait quelque chose à faire avec le chargement des dépendances, je pense.