Re: [Rubyonrails-ug] rvm: [BUG] cross-thread violation on rb_gc()

2011-05-26 Diskussionsfäden Christoph Petschnig
Hallo Stefan,

ich habe vor kurzem ein ganz ähnliches Erlebnis gehabt, und zwar beim
Umstieg von normalem 1.8.7 auf REE, und zwar ganz ohne rvm.

Wenn ich es richtig verstanden habe, kann es leicht vorkommen, dass
Gems nur einmal pro Ruby-Version (z.B. in
/path/to/ruby/lib/ruby/gems/1.9.1 für 1.9.x) installiert werden. Wenig
problematisch sind dabei die Gems, die direkt neben/unter der Ruby
Version installiert wurden, sondern viel mehr die, die an einer
allgemeinen Stelle liegen (z.B. im $HOME). Ein `gem env` gibt darüber
Auskunft.

Ein expliziter gempath auf mein gewünschtes Ruby in ~/.gemrc hat dann
das Problem gelöst. Siehe auch
http://docs.rubygems.org/read/chapter/11. Wenn `gem env` nur einen
Eintrag unter GEM PATHS hat, sollte es keine Probleme mehr geben.

Ich hoffe, das hilft Dir weiter. Viele Grüße

Christoph




Am 26. Mai 2011 07:19 schrieb Stefan Frank s.fr...@vierundsechzig.de:
 Hi Liste,

 in der Liste doofer Ideen, die man nachmittags um 5 noch anfassen kann,
 rangiert ein Umstieg von mri 1.8.7 auf 1.9.2 sehr weit oben. Man lernt dabei
 vor allem eine Menge über rvm, aber irgendwie habe ich das Gefühl, dass ich
 da ein paar Sachen noch nicht verstanden habe, vielleicht kann mich da ja
 jemand erleuchten:

 - 1.9.2 ist ein Alias für alle möglichen 1.9.2-Versionen: Ich hatte in
 meiner rvm-Installation noch einige frühe Installationen, die zusammen mit
 rails noch segfaults produzierten. Weil das so ist, greift er sich beim rvm
 install 1.9.2 auch nicht eine aktuelle Version, sondern eine der Versionen
 aus ~/.rvm/src - nur für den Fall, dass sich noch jemand fragt, warum die
 segfaults immer noch nicht weg sind. Also am besten immer die volle Version
 spezifizieren, wenn man einen Interpreter installiert oder noch besser, das
 ~/.rvm/src-Verzeichnis regelmäßig aufräumen ...

 - nachdem also die richtige 1.9.2-Version (ich benutze momentan
 ruby-1.9.2-p180) installiert ist, läuft die Anwendung aber immer noch nicht.
 Keine segfaults mehr, aber dafür das ebenso wenig aussagekräftige:

 [BUG] cross-thread violation on rb_gc()
 (null)

 Abort trap


 Ein bisschen googlen bringt hier gems mit native Extensions als Ursache zum
 Vorschein: Wenn die bereits gegen einen anderen Interpreter kompiliert
 wurden, in diesem Fall also gegen 1.8.7, dann gibt es diese Fehlermeldung.
 Der Spaß war dann, die entsprechenden gems zu finden, zu uninstall'en und
 neu zu installieren. Dabei werden die native Extensions neu gebaut, diesmal
 dann gegen 1.9.2.


 Daraus ergeben sich mir einige Fragezeichen:

 - verschiedene Intepreter mit rvm ja, aber wechseln zwischen 1.9.2 und 1.8.7
 geht nicht? Eigentlich hatte ich 1.9.2 nur ausprobieren wollen, aber jetzt
 sieht es so aus, als wäre mir der Rückweg abgeschnitten: Es läuft jetzt
 unter 1.9.2, aber die cross-thread violation kriege ich jetzt unter 1.8.7...

 - gibt es eine Möglichkeit herauszufinden, welche gems native Extensions
 haben? In diesem Fall habe ich es mit Trial-and-Error und informiertem Raten
 versucht (hint: es sind mehr, als man meint und manchmal auch andere, als
 man meint...)Neben den üblichen Verdächtigen wie mysql, rmagick, bson_ext,
 nokogiri usw. war es am Ende json, das noch eine native-extension hatte und
 neu installiert werden musste. bcrypt-ruby hat keine native extension,
 wollte aber trotzdem neu installiert werden - kein sehr wissenschaftliches
 Verfahren...

 - wirklich verstanden habe ich die Struktur von rvm noch immer nicht ganz:
 unter ~/.rvm/gems/ruby-1.9.2-p180/gems finden sich jetzt die gems für 1.9.2
 - keine Links, sondern echte Kopien, soweit ich das sehe. Aber die native
 Extensions teilen sich trotzdem alle Interpreter?! Oder nur die mri's oder
 sind auch jruby und macruby davon betroffen? Dann ist so ein bisschen der
 Witz von rvm weg, aber vielleicht kann das ja noch jemand aufklären...


 Grüße
 Stefan



 ___
 rubyonrails-ug mailing list
 rubyonrails-ug@headflash.com
 http://mailman.headflash.com/listinfo/rubyonrails-ug

___
rubyonrails-ug mailing list
rubyonrails-ug@headflash.com
http://mailman.headflash.com/listinfo/rubyonrails-ug


Re: [Rubyonrails-ug] rvm: [BUG] cross-thread violation on rb_gc()

2011-05-26 Diskussionsfäden Jan Maximilian Alexander Schulz
Hallo Frank,

also wenn ich tippen müsste, so würde ich schätzen, dass bei der Installation 
etwas schief gelaufen ist, oder du aber rvm mit sudo verwendest. Anderenfalls, 
sollten eigentlich keinerlei Probleme auftreten, da rvm alle ruby spezifischen 
files / folders komplett verwaltet. Soll heißen, wenn du dein ruby wechselst, 
passt er alle Pfade entsprechend an, egal ob es nur das gem Verzeichnis ist 
oder aber auch native extensions. Du kannst das ganze selber überprüfen indem 
zu einem ruby wechselst und dann mit rvm info Dir ein paar Angaben zu der 
verwendeten Version anzeigen lässt. Dort siehst du auch wo was denn genau 
liegt. Im Prinzip liegt alles unter ~/.rvm/rubies

Ach ja, du musst eventuell noch mit den Gemsets aufpassen, da du für jedes ruby 
mehrere Gemsets verwalten kannst. Sehr sinnvoll wenn du mehr als eine Anwendung 
programmierst.


Hoffe das hilft Dir,

Max

On 26.05.2011, at 07:19, Stefan Frank wrote:

Hi Liste,

in der Liste doofer Ideen, die man nachmittags um 5 noch anfassen kann, 
rangiert ein Umstieg von mri 1.8.7 auf 1.9.2 sehr weit oben. Man lernt dabei 
vor allem eine Menge über rvm, aber irgendwie habe ich das Gefühl, dass ich da 
ein paar Sachen noch nicht verstanden habe, vielleicht kann mich da ja jemand 
erleuchten:

- 1.9.2 ist ein Alias für alle möglichen 1.9.2-Versionen: Ich hatte in meiner 
rvm-Installation noch einige frühe Installationen, die zusammen mit rails noch 
segfaults produzierten. Weil das so ist, greift er sich beim rvm install 1.9.2 
auch nicht eine aktuelle Version, sondern eine der Versionen aus ~/.rvm/src - 
nur für den Fall, dass sich noch jemand fragt, warum die segfaults immer noch 
nicht weg sind. Also am besten immer die volle Version spezifizieren, wenn man 
einen Interpreter installiert oder noch besser, das ~/.rvm/src-Verzeichnis 
regelmäßig aufräumen ...

- nachdem also die richtige 1.9.2-Version (ich benutze momentan 
ruby-1.9.2-p180) installiert ist, läuft die Anwendung aber immer noch nicht. 
Keine segfaults mehr, aber dafür das ebenso wenig aussagekräftige:

[BUG] cross-thread violation on rb_gc()
(null)

Abort trap


Ein bisschen googlen bringt hier gems mit native Extensions als Ursache zum 
Vorschein: Wenn die bereits gegen einen anderen Interpreter kompiliert wurden, 
in diesem Fall also gegen 1.8.7, dann gibt es diese Fehlermeldung. Der Spaß war 
dann, die entsprechenden gems zu finden, zu uninstall'en und neu zu 
installieren. Dabei werden die native Extensions neu gebaut, diesmal dann gegen 
1.9.2.


Daraus ergeben sich mir einige Fragezeichen:

- verschiedene Intepreter mit rvm ja, aber wechseln zwischen 1.9.2 und 1.8.7 
geht nicht? Eigentlich hatte ich 1.9.2 nur ausprobieren wollen, aber jetzt 
sieht es so aus, als wäre mir der Rückweg abgeschnitten: Es läuft jetzt unter 
1.9.2, aber die cross-thread violation kriege ich jetzt unter 1.8.7...

- gibt es eine Möglichkeit herauszufinden, welche gems native Extensions haben? 
In diesem Fall habe ich es mit Trial-and-Error und informiertem Raten versucht 
(hint: es sind mehr, als man meint und manchmal auch andere, als man 
meint...)Neben den üblichen Verdächtigen wie mysql, rmagick, bson_ext, nokogiri 
usw. war es am Ende json, das noch eine native-extension hatte und neu 
installiert werden musste. bcrypt-ruby hat keine native extension, wollte aber 
trotzdem neu installiert werden - kein sehr wissenschaftliches Verfahren...

- wirklich verstanden habe ich die Struktur von rvm noch immer nicht ganz: 
unter ~/.rvm/gems/ruby-1.9.2-p180/gems finden sich jetzt die gems für 1.9.2 - 
keine Links, sondern echte Kopien, soweit ich das sehe. Aber die native 
Extensions teilen sich trotzdem alle Interpreter?! Oder nur die mri's oder sind 
auch jruby und macruby davon betroffen? Dann ist so ein bisschen der Witz von 
rvm weg, aber vielleicht kann das ja noch jemand aufklären...


Grüße
Stefan



___
rubyonrails-ug mailing list
rubyonrails-ug@headflash.com
http://mailman.headflash.com/listinfo/rubyonrails-ug

___
rubyonrails-ug mailing list
rubyonrails-ug@headflash.com
http://mailman.headflash.com/listinfo/rubyonrails-ug


Re: [Rubyonrails-ug] rvm: [BUG] cross-thread violation on rb_gc()

2011-05-26 Diskussionsfäden Stefan Frank


  
  
Vielen Dank fr die Infos, aber nee, das war's beides nicht:

Die gem Paths sind jeweils so wie sie sein sollen und wie ich es von
rvm erwartet hatte:

- GEM PATHS:
 - /Users/sfrank/.rvm/gems/ree-1.8.7-2011.03
 - /Users/sfrank/.rvm/gems/ree-1.8.7-2011.03@global

bzw. 
 - GEM PATHS:
 - /Users/sfrank/.rvm/gems/ruby-1.9.2-p180
 - /Users/sfrank/.rvm/gems/ruby-1.9.2-p180@global

und nee, rvm wird auch nicht unter sudo ausgefhrt. 

Auch die Pfade fr native-extensions werden richtig zusammengebaut,
es wird jeweils ~/.rvm/gems/ruby-1.9.2-p180/bin:~ /.rvm/gems/ruby-1.9.2-p180@global/bin
fr den entsprechenden Interpreter vorne an den PATH gehngt. 

Daher sollte man meinen, wenn man eine frischen Interpreter
aufsetzt, sollte~/.rvm/gems/ruby-1.9.2-p180/bin
noch leer sein und sich nach einem bundle install mit den
frisch gebauten native Extensions fr diesen Interpreter fllen.
Tut's aber offenbar nicht - ich kann hier nur spekulieren, warum.
Das Problem scheint aber bekannt zu sein
(http://beginrescueend.com/support/troubleshooting/, hier gibt es
einen Eintrag BusError/Segfault, der das Problem erwhnt). 

Meine Vermutung ist, dass es hier ein hnliches Problem gibt wie mit
der nicht aktualisierten 1.9.2: Wenn das gem in der angeforderten
Version schon mal irgendwann von irgendeinem Interpreter geladen und
die native extensions gebaut wurden, dann wird es nicht wieder neu
geladengebaut, sondern aus irgendeinem cache nur noch kopiert.


Na, immerhin luft jetzt wieder alles, und solange man nur zwischen
kompatiblen Interpretern wechselt, hat man das Problem ja auch
nicht...

Gre 
Stefan





  

  
  

  

Jan Maximilian
Alexander Schulz
  26. Mai 2011 10:26
  

  
  
Hallo Frank,
  
  also wenn ich tippen msste, so wrde ich schtzen, dass bei
  der Installation etwas schief gelaufen ist, oder du aber rvm
  mit sudo verwendest. Anderenfalls, sollten eigentlich
  keinerlei Probleme auftreten, da rvm alle ruby spezifischen
  files / folders komplett verwaltet. Soll heien, wenn du dein
  ruby wechselst, passt er alle Pfade entsprechend an, egal ob
  es nur das gem Verzeichnis ist oder aber auch native
  extensions. Du kannst das ganze selber berprfen indem zu
  einem ruby wechselst und dann mit "rvm info" Dir ein paar
  Angaben zu der verwendeten Version anzeigen lsst. Dort siehst
  du auch wo was denn genau liegt. Im Prinzip liegt alles unter
  ~/.rvm/rubies
  
  Ach ja, du musst eventuell noch mit den Gemsets aufpassen, da
  du fr jedes ruby mehrere Gemsets verwalten kannst. Sehr
  sinnvoll wenn du mehr als eine Anwendung programmierst.
  
  
  Hoffe das hilft Dir,
  
  Max
  
  On 26.05.2011, at 07:19, Stefan Frank wrote:
  
  Hi Liste,
  
  in der Liste doofer Ideen, die man nachmittags um 5 noch
  anfassen kann, rangiert ein Umstieg von mri 1.8.7 auf 1.9.2
  sehr weit oben. Man lernt dabei vor allem eine Menge ber rvm,
  aber irgendwie habe ich das Gefhl, dass ich da ein paar
  Sachen noch nicht verstanden habe, vielleicht kann mich da ja
  jemand erleuchten:
  
  - 1.9.2 ist ein Alias fr alle mglichen 1.9.2-Versionen: Ich
  hatte in meiner rvm-Installation noch einige frhe
  Installationen, die zusammen mit rails noch segfaults
  produzierten. Weil das so ist, greift er sich beim rvm install
  1.9.2 auch nicht eine aktuelle Version, sondern eine der
  Versionen aus ~/.rvm/src - nur fr den Fall, dass sich noch
  jemand fragt, warum die segfaults immer noch nicht weg sind.
  Also am besten immer die volle Version spezifizieren, wenn man
  einen Interpreter installiert oder noch besser, das
  ~/.rvm/src-Verzeichnis regelmig aufrumen ...
  
  - nachdem also die richtige 1.9.2-Version (ich benutze
  momentan ruby-1.9.2-p180) installiert ist, luft die Anwendung
  aber immer noch nicht. Keine segfaults mehr, aber dafr das
  ebenso wenig aussagekrftige:
  
  [BUG] cross-thread violation on rb_gc()
  (null)
  
  Abort trap
  
  
  Ein bisschen googlen bringt hier gems mit native Extensions
  als Ursache zum Vorschein: Wenn die bereits gegen einen
  anderen Interpreter kompiliert wurden, in diesem Fall also
  gegen 1.8.7, dann gibt es diese Fehlermeldung. Der Spa war
  dann, die entsprechenden gems zu finden, zu uninstall'en und
  neu