1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

merge revision(s) 55663: [Backport #12583]

* gc.c (gc_mark_roots): should mark the VM object itself to mark
	  singleton class of the VM object.
	  Before this patch, we only set mark bit for the VM object and
	  invoke mark function separately.
	  [Bug #12583]

	* test/ruby/test_gc.rb: add a test.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@55921 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
usa 2016-08-16 04:36:44 +00:00
parent 36ecd73133
commit 8b440f54bd
4 changed files with 19 additions and 2 deletions

View file

@ -1,3 +1,13 @@
Tue Aug 16 13:36:00 2016 Koichi Sasada <ko1@atdot.net>
* gc.c (gc_mark_roots): should mark the VM object itself to mark
singleton class of the VM object.
Before this patch, we only set mark bit for the VM object and
invoke mark function separately.
[Bug #12583]
* test/ruby/test_gc.rb: add a test.
Tue Aug 16 13:29:25 2016 NAKAMURA Usaku <usa@ruby-lang.org>
* lib/rubygems/package.rb: Fixed potential perms issue unpacking of

2
gc.c
View file

@ -4389,7 +4389,7 @@ gc_mark_roots(rb_objspace_t *objspace, const char **categoryp)
MARK_CHECKPOINT("vm");
SET_STACK_END;
rb_vm_mark(th->vm);
if (th->vm->self) gc_mark_set(objspace, th->vm->self);
if (th->vm->self) gc_mark(objspace, th->vm->self);
MARK_CHECKPOINT("finalizers");
mark_tbl(objspace, finalizer_table);

View file

@ -377,4 +377,11 @@ class TestGc < Test::Unit::TestCase
C.new
end;
end
def test_vm_object
assert_normal_exit <<-'end', '[Bug #12583]'
ObjectSpace.each_object{|o| o.singleton_class rescue 0}
ObjectSpace.each_object{|o| case o when Module then o.instance_methods end}
end
end
end

View file

@ -1,6 +1,6 @@
#define RUBY_VERSION "2.2.6"
#define RUBY_RELEASE_DATE "2016-08-16"
#define RUBY_PATCHLEVEL 349
#define RUBY_PATCHLEVEL 350
#define RUBY_RELEASE_YEAR 2016
#define RUBY_RELEASE_MONTH 8