I have found another crash in ferret; this one just uses a regular search. It''s similar to an issue reported by Matt Schnitz a while ago, but unlike his, mine does not go away if I turn off omit_norms. It does go away if I turn on the garbage collector more often, but I''m not sure that''s a stable workaround under the circumstances. This one isn''t a segfault, but more complicated versions have been. This bug manifests as a error in the garbage collector: $ ruby rw_ferret_test.rb .......rw_ferret_test.rb:20: [BUG] rb_gc_mark(): unknown data type 0x28(0x402ba3a4) non object ruby 1.8.2 (2005-04-11) [i386-linux] Aborted Here''s the code: require ''rubygems'' require ''ferret'' include Ferret def phrase(num) "a_fairly_long_phrase%05d"%num end LOOPS=(ARGV[1]||40).to_i _fields = Index::FieldInfos.new _fields.add_field :phrase, :term_vector => :no, :store => :no, :index => :untokenized $phrases=I.new(:field_infos=>_fields) phrase(0).upto(phrase(LOOPS)){|phrase| $phrases << {:phrase=> phrase} } @phrases=Ferret::Search::Searcher.new $phrases.reader count=0 loop{ @phrases.search( Search::TermQuery.new(:phrase, "a_fairly_long_phrase%05d"%rand(LOOPS+1)) ) if ((count+=1)%1000).zero? #1309 print ''.'' STDOUT.flush # GC.start #enable this to workaround end } $phrases.close
On 07.12.2006, at 10:38, Caleb Clausen wrote:> I have found another crash in ferret; this one just uses a regular > search. It''s similar to an issue reported by Matt Schnitz a while ago, > but unlike his, mine does not go away if I turn off omit_norms. It > does > go away if I turn on the garbage collector more often, but I''m not > sure > that''s a stable workaround under the circumstances. > > This one isn''t a segfault, but more complicated versions have been. > This > bug manifests as a error in the garbage collector: > > $ ruby rw_ferret_test.rb > .......rw_ferret_test.rb:20: [BUG] rb_gc_mark(): unknown data type > 0x28(0x402ba3a4) non object > ruby 1.8.2 (2005-04-11) [i386-linux] > > AbortedI tried your code and I get lots of dots but no error ;) Maybe you should use a newer Ruby version. I''m using ruby 1.8.5 (2006-08-25) [powerpc-darwin8.8.0] Cheers, Andy
Hi,> On 07.12.2006, at 10:38, Caleb Clausen wrote: > > >> I have found another crash in ferret; this one just uses a regular >> search. It''s similar to an issue reported by Matt Schnitz a while ago, >> but unlike his, mine does not go away if I turn off omit_norms. It >> does >> go away if I turn on the garbage collector more often, but I''m not >> sure >> that''s a stable workaround under the circumstances. >> >> This one isn''t a segfault, but more complicated versions have been. >> This >> bug manifests as a error in the garbage collector: >> >> $ ruby rw_ferret_test.rb >> .......rw_ferret_test.rb:20: [BUG] rb_gc_mark(): unknown data type >> 0x28(0x402ba3a4) non object >> ruby 1.8.2 (2005-04-11) [i386-linux] >> >> Aborted >> > > I tried your code and I get lots of dots but no error ;) > > Maybe you should use a newer Ruby version. I''m using > > ruby 1.8.5 (2006-08-25) [powerpc-darwin8.8.0]I get the same crash on ruby 1.8.5 (2006-08-25) [i386-cygwin], perhaps it''s specific to certain architectures? Cheers! Patrick -------------- next part -------------- An HTML attachment was scrubbed... URL: http://rubyforge.org/pipermail/ferret-talk/attachments/20061207/95e397b8/attachment-0001.html
On 07.12.2006, at 14:56, Patrick Ritchie wrote:>>> [BUG] rb_gc_mark(): unknown data type 0x28(0x402ba3a4) non object >>> ruby 1.8.2 (2005-04-11) [i386-linux] Aborted >> I tried your code and I get lots of dots but no error ;) Maybe you >> should use a newer Ruby version. I''m using ruby 1.8.5 (2006-08-25) >> [powerpc-darwin8.8.0] > I get the same crash on ruby 1.8.5 (2006-08-25) [i386-cygwin], > perhaps it''s specific to certain architectures?Not sure if this is of any use, but I tried it on two other machines. Linux (Ubuntu): ................................test.rb:21: [BUG] rb_gc_mark(): unknown data type 0x0(0xb7d9e208) non object ruby 1.8.4 (2005-12-24) [i486-linux] Linux (Debian): ruby 1.8.5 (2006-08-25) [i486-linux] All test (including the first one on Mac OS X) were run with Ferret 0.10.13 Which version of Ferret are you using? The combination Ruby 1.8.5/ Ferret 0.10.13 seems to work best. -- Andy
> Which version of Ferret are you using? The combination Ruby 1.8.5/ > Ferret 0.10.13 seems to work best.1.8.4 and 0.10.13 is fine, too :) for other test results take a look at http://camping.davebalmain.com/smoke_alarm/ Ben
Hi Ben! On 07.12.2006, at 15:44, Benjamin Krause wrote:>> Which version of Ferret are you using? The combination Ruby 1.8.5/ >> Ferret 0.10.13 seems to work best. > > 1.8.4 and 0.10.13 is fine, too :)Yes, I used that combo successfully on my staging system for quite some time. However, the test case that Caleb posted fails on that same machine. ................................test.rb:21: [BUG] rb_gc_mark(): unknown data type 0x0(0xb7d9e208) non object ruby 1.8.4 (2005-12-24) [i486-linux] Perhaps David should take a look at this. BTW, any news from him? Is he still missing in the outbacks down under? Cheers, Andreas
> Perhaps David should take a look at this. BTW, any news from him? Is > he still missing in the outbacks down under?Hey .. Well, no news.. just some very short notices that he''s still lost and without an internet connection.. If I hear anything i''ll send it to this list. A bunch of things are left on Daves agenda and he wanted to implement a lot of great features this year, to finally reach a 1.0 status. But I guess we will need to wait a couple of more weeks until a new ferret release will be available. Ben
I met the same problem before,i thought it caused by ruby Multithreading. So i make a new searcher before search every time,it works well,maybe you should try this. -- Posted via http://www.ruby-forum.com/.
On 12/7/06, Caleb Clausen <caleb at inforadical.net> wrote:> I have found another crash in ferret; this one just uses a regular > search. It''s similar to an issue reported by Matt Schnitz a while ago, > but unlike his, mine does not go away if I turn off omit_norms. It does > go away if I turn on the garbage collector more often, but I''m not sure > that''s a stable workaround under the circumstances. > > This one isn''t a segfault, but more complicated versions have been. This > bug manifests as a error in the garbage collector: > > $ ruby rw_ferret_test.rb > .......rw_ferret_test.rb:20: [BUG] rb_gc_mark(): unknown data type > 0x28(0x402ba3a4) non object > ruby 1.8.2 (2005-04-11) [i386-linux] > > Aborted > > > Here''s the code: > > require ''rubygems'' > require ''ferret'' > include Ferret > > def phrase(num) > "a_fairly_long_phrase%05d"%num > end > > LOOPS=(ARGV[1]||40).to_i > > _fields = Index::FieldInfos.new > _fields.add_field :phrase, :term_vector => :no, :store => :no, :index => > :untokenized > $phrases=I.new(:field_infos=>_fields) > > phrase(0).upto(phrase(LOOPS)){|phrase| $phrases << {:phrase=> phrase} } > > @phrases=Ferret::Search::Searcher.new $phrases.reader > count=0 > loop{ > @phrases.search( > Search::TermQuery.new(:phrase, > "a_fairly_long_phrase%05d"%rand(LOOPS+1)) > ) > > if ((count+=1)%1000).zero? #1309 > print ''.'' > STDOUT.flush > # GC.start #enable this to workaround > end > } > $phrases.closeThis problem has been fixed. -- Dave Balmain http://www.davebalmain.com/