Ich habe fast eine Stunde lang meinen Kopf gegen die Wand geschlagen, um herauszufinden, was hier falsch läuft, und ich bin sicher (oder hoffe eher), dass es etwas ziemlich Offensichtliches ist, das ich übersehen habe. Ich verwende Ruby 1.9.1, Sinatra 1.0 und RMagick 2.13.1. ImageMagick und RMagick sind korrekt installiert und funktionsfähig - ich habe Bilder von irb erfolgreich bearbeitet und gespeichert.
Der relevante Teil des params-Arrays (Formatierungsänderungen aus Gründen der Lesbarkeit):
{"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"
}
}
Der relevante 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
Der Fehler (Zeile 229 ist die Zeile, die mit "thumbnail =" beginnt:
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
Hat jemand eine Idee was los ist? Vielen Dank!
ruby
sinatra
segmentation-fault
rmagick
ruby-1.9.1
Grant Heaslip
quelle
quelle
logger.debug
In diesem Fall beschreibt die Syntax#<File:...>
lediglich, dass der Wert für den:tempfile
Schlüssel eine Instanz von istFile
. Stellen Sie sich das so vor: Wenn das ein echter Kommentar wäre, wäre der beschriebene Hash ein Syntaxfehler :)Antworten:
Gehen Sie folgendermaßen vor, um Matthew Savages Kommentar zu erweitern:
und es fängt wieder an zu arbeiten. Die Dateien müssen nicht bearbeitet werden. (Ich bin nicht sicher, ob er das tatsächlich sagt oder ob er sagt , dass er das Flag entfernen soll , aber der obige Homebrew-Befehl funktioniert unter OSX 10.6 für mich.)
Wenn Sie bereits imagemagick installiert haben, dann
brew upgrade -f
wird nicht mehr neu installiert, daher müssen Sie es zuerst deinstallieren.)quelle
Ich hatte ein sehr ähnliches Problem unter OS X 10.6.7 mit Ruby 1.9.2p180.
Um den Kommentar von Ash Berlin zu erweitern, müssen Sie, wenn Sie den Homebrew-Paketmanager verwenden, das imagemagick-Paket deinstallieren und auch den Cache entfernen, bevor es funktioniert.
Deinstallieren Sie imagemagick:
Löschen Sie den Cache:
rm -rf `brew --cache imagemagick`
Installieren Sie dann das Paket mit diesem Flag erneut:
quelle
Für Benutzer von MacPorts, ImageMagick 6.6.5 und Ruby 1.9.2.
port uninstall ImageMagick
port edit ImageMagick
--disable-openmp
zuconfigure.args
(in der Nähe von Zeile 100)port install ImageMagick
Arbeitete für mich :)
quelle
Ich hatte ein ähnliches Problem bei der Verwendung von Rails 3 mit Carrierwave auf OS X 10.6 und Ruby 1.9.2. Außerdem stürzte ich bei einem Aufruf zum Lesen jedes Mal ab, wenn die Größe eines Bildes geändert werden musste. tun:
löste das Problem für mich.
quelle
Der Absturz kann auf den Zugriff auf ImageMagick in einem Thread unter OSX MacPorts zurückzuführen sein. Siehe Beitrag .
quelle
--disable-openmp
(Zeile 58) entfernt auf meinem System), dann installiert und behoben!Keine Antwort, nur meine Erfahrungen:
Ich bin auch in einem meiner eigenen Projekte auf dieses Problem gestoßen. Ich habe dieses Problem auf OS X (Schneeleopard) mit Ruby-1.9.2-p0 und Ruby-1.9.2-p136.
Besonders verwirrend für mich war, dass ich mit rmagick über die Rails-Konsole ein Bild einlesen kann. Wenn ich jedoch genau die gleiche Linie aus meiner Rails-App treffe, wird sie genauso wie oben beschrieben in die Luft gesprengt.
Der Wiederaufbau von Imagemagick über Homebrew wie oben beschrieben war mir nicht genug. Ich musste auch das rmagick-Juwel löschen und es per Bundle neu erstellen.
quelle
Wenn Sie imagemagick bereits mit Brew installiert haben, verwenden Sie Folgendes:
quelle
UPDATE: Dies ist an sich keine echte Antwort (ich sehe immer noch das gleiche Problem in MRI 1.9.1), aber ich habe RVM verwendet, um meine MRI 1.8.7-Installation und Edelsteine auf den neuesten Stand zu bringen, und habe versucht, sie auszuführen. und alles funktioniert perfekt. Ich gehe davon aus, dass das Problem darin besteht, dass RMagick noch nicht ganz mit 1.9.1 kompatibel ist, obwohl in der Dokumentation die Unterstützung von Ruby 1.9 ausdrücklich erwähnt wird.
quelle
Das gleiche Problem trat nach dem Upgrade von ImageMagick auf einer Linux-Box auf. Hier gibt es noch einige Hinweise. Ich vermute , dass einige Mismatch von ImageMagick Bibliotheken und verknüpft Rubin Edelsteine (die mit allen bisherigen Kommentare einverstanden ist. Sehen Sie sich diese ähnlichen Thread bei RubyForge. Http://rubyforge.org/forum/forum.php?thread_id=48036&forum_id=33
Meine Lösung bestand darin, RMagick zugunsten von MojoMagick zu sichern - einer sehr schlanken Ruby-API, die keine Verknüpfung zu ImageMagick-Bibliotheken herstellt, sondern einfach die Konsolen-Binärdateien verwendet.
Es ist hier verfügbar: www.misuse.org/science/2008/01/30/mojomagick-ruby-image-library-for-imagemagick/
Ich habe ein Juwel erstellt und die Größe geändert, um sie mit der Crop-Funktionalität zu füllen, die auf github https://github.com/bunnymatic/mojo_magick verfügbar ist
quelle
Ich habe die MacPorts-Lösung von CaptainPete ausprobiert. Es baute 6.6.6-0 und hatte immer noch das gleiche Problem. Der Wechsel zum Brauen, um den Build zu machen, hat den Trick getan. Beachten Sie, dass Brew 6.6.4-5 gebaut hat. Es ist möglich, dass es in 6.6.6 mehrere Fehler oder einen neuen Fehler gibt, der ähnliche Probleme verursacht.
quelle
Keine dieser Antworten hat es in meinem Fall behoben.
Nachdem ich weiter
.resample
nachgeforscht hatte , stellte ich fest, dass ich ein 0,02dpi-Bild aufrief (ich ziehe die Bilder von einer Drittanbieter-API, sodass ich keine Ahnung hatte). Dies führte sogar zu einer Warnmeldung "Festplatte fast voll", nachdem der Segmentierungsfehler aufgetreten war.quelle
Ich habe den gleichen Fehler (nach vielen Versuchen) gelöst, indem ich die Zeile 'gem "pg"' in der gemfile unter den Nebeledelstein verschoben habe. Dies hatte meiner Meinung nach etwas mit dem Laden von Abhängigkeiten zu tun.
quelle