Fix ruby segment fault (#3708)
* Fix ruby segment fault
1) rb_ary_new cannot be called during allocate function. During allocate
fucntion, the containing object hasn't been marked and rb_ary_new may
invoke gc to collect containing object.
2) The global map should be marked before allocating it. Otherwise it
may be garbage collected.
* Add test
* Remove commented code
* Fix grammer error
diff --git a/ruby/Rakefile b/ruby/Rakefile
index a329a77..e30a75a 100644
--- a/ruby/Rakefile
+++ b/ruby/Rakefile
@@ -99,7 +99,13 @@
end
Rake::TestTask.new(:test => :build) do |t|
- t.test_files = FileList["tests/*.rb"]
+ t.test_files = FileList["tests/*.rb"].exclude("tests/gc_test.rb")
+end
+
+# gc_test needs to be split out to ensure the generated file hasn't been
+# imported by other tests.
+Rake::TestTask.new(:gc_test => :build) do |t|
+ t.test_files = FileList["tests/gc_test.rb"]
end
task :build => [:clean, :compile, :genproto]