[#31589] [Bug #3457] URI.encode does not escape square brackets — Shyouhei Urabe <redmine@...>
Issue #3457 has been updated by Shyouhei Urabe.
2010/8/2 Shyouhei Urabe <redmine@ruby-lang.org>:
[#31614] Release engineering status of 1.9.2-p0 — Yusuke ENDOH <mame@...>
Hi,
[#31666] [Bug #3677] unable to run certain gem binaries' in windows 7 — Roger Pack <redmine@...>
Bug #3677: unable to run certain gem binaries' in windows 7
Issue #3677 has been updated by Roger Pack.
[#31681] [Bug #3683] getgrnam on computer with NIS group (+)? — Rocky Bernstein <redmine@...>
Bug #3683: getgrnam on computer with NIS group (+)?
Issue #3683 has been updated by Rocky Bernstein.
Hi,
[#31706] [Bug #3690] method_missing in a BasicObject's singleton class - infinite recursion segfaults — Jan Lelis <redmine@...>
Bug #3690: method_missing in a BasicObject's singleton class - infinite recursion segfaults
[#31730] [Bug #3701] Gem.find_files returns empty array — Yusuke Endoh <redmine@...>
Bug #3701: Gem.find_files returns empty array
[#31739] [Backport #3702] segmentation fault while compiling 1.9.1-p430 on debian squeeze — Tomasz Pajor <redmine@...>
Backport #3702: segmentation fault while compiling 1.9.1-p430 on debian squeeze
[#31757] [Bug #3712] SEGV fails to produce stack dump / backtrace in debug build — Peter Weldon <redmine@...>
Bug #3712: SEGV fails to produce stack dump / backtrace in debug build
[#31761] [Feature #3714] Add getters for Enumerator — Marc-Andre Lafortune <redmine@...>
Feature #3714: Add getters for Enumerator
[#31762] [Backport #3715] Enumerator#size and #size= — Marc-Andre Lafortune <redmine@...>
Backport #3715: Enumerator#size and #size=
[#31798] [Bug #3726] require degradation from 1.9.1 — Yura Sokolov <redmine@...>
Bug #3726: require degradation from 1.9.1
[#31805] [Backport #3728] IO.select is not documented. — Mike Perham <redmine@...>
Backport #3728: IO.select is not documented.
[#31806] 1.9.1 has marshal bugs in everything but p129 — Ryan Davis <ryand-ruby@...>
Is there any chance we can release a 1.9.1 that fixes the current marshal bugs? It is fixed in 1.9.2, so I know the patch exists somewhere and could be merged over. Otherwise I think I'm going to have to drop support for 1.9.1 early.
[#31843] Garbage Collection Question — Asher <asher@...>
This question is no doubt a function of my own lack of understanding, but I think that asking it will at least help some other folks see what's going on with the internals during garbage collection.
> The question in short: when an object goes out of scope and has no
Right - so how does a pointer ever get off the stack?
On 8/26/10 11:51 AM, Asher wrote:
I very much appreciate the response, and this is helpful in describing the narrative, but it's still a few steps behind my question - but it may very well have clarified some points that help us get there.
You have introduced something called a "root node" without defining it. What do you mean by this?
[#31851] [Bug #3747] Possible bug of String#count? — Ruohao Li <redmine@...>
Bug #3747: Possible bug of String#count?
[#31868] [Bug #3750] SEGV: ruby -rprofile test/ruby/test_assignment.rb — Peter Weldon <redmine@...>
Bug #3750: SEGV: ruby -rprofile test/ruby/test_assignment.rb
[#31885] Avoiding $LOAD_PATH pollution — Eric Hodel <drbrain@...7.net>
Last year Nobu asked me to propose an API for adding an object to
Hi Eric,
On Jan 8, 2011, at 12:08, zimbatm ... wrote:
Just a note for future references. While playing with require, I found
> The lookup object pushed onto $LOAD_PATH must respond to #path_for. The
On Aug 28, 2010, at 19:30, Run Paint Run Run wrote:
>> How confident are we that this API would be sufficient for replacing the
[#31914] [Ruby 1.8.7-RubySpec#3757][Open] GC bug after loading gem — Joel VanderWerf <redmine@...>
RubySpec #3757: GC bug after loading gem
[#31929] Proposal: Autoload with block — Magnus Holm <judofyr@...>
= A proposal for autoload w/block:
Sorry to plug my own stuff, but you might find subload of some interest here. It's unfinished, but provides some flexibility in these matters that might be of interest. I also have a fair amount of notes about possible other use cases that aren't covered yet in the subload code. Whilst on the topic, some consideration for thread safety might be worth the time - not that I'm proposing it can be 'fixed', merely considered to avoid worst cases.
Magnus, have you seen http://redmine.ruby-lang.org/issues/show/462 ?
That's interesting, but I don't buy matz' argument:
[#31947] not use system for default encoding — Roger Pack <rogerdpack2@...>
It strikes me as a bit "scary" to use system locale settings to
> It strikes me as a bit "scary" to use system locale settings to *arbitrarily*
NARUSE, Yui wrote on 2010-11-15 11:07:
[#31969] [Ruby 1.9-Feature#3773][Open] Module#parent — Thomas Sawyer <redmine@...>
Feature #3773: Module#parent
[#31971] Change Ruby's License to BSDL + Ruby's dual license — "NARUSE, Yui" <naruse@...>
Ruby's License will change to BSDL + Ruby's dual license
On 01/09/10 at 01:30 +0900, NARUSE, Yui wrote:
(2010/09/01 2:36), Lucas Nussbaum wrote:
I wrote a concrete patch.
(2010/09/01 1:30), NARUSE, Yui wrote:
On Aug 31, 2010, at 9:50 AM, NARUSE, Yui wrote:
[ruby-core:31843] Garbage Collection Question
This question is no doubt a function of my own lack of understanding, but I think that asking it will at least help some other folks see what's going on with the internals during garbage collection.
It's best summarized by example code and summary of my understanding of the resulting output so far as marking an object is concerned.
The question in short: when an object goes out of scope and has no references that were left to it, how does it get collected? Conceptually this seems easy - the GC walks the heap to see if the contents are still valid pointers to the heap. Once the pointer is invalid, it makes total sense to me how the rest proceeds. But how does the pointer to the heap ever become invalid?
Hopefully my example and summary will clarify:
require 'pp'
class Hash::Weak < Hash
def []( key )
# get the stored ID - a FixNum, not an object reference to our weak-referenced object
obj_id = super( key.to_sym )
# theoretically this should cause non-referenced objects to get cleaned up
# so long as nothing looks like a pointer or reference to it
ObjectSpace.garbage_collect
# now get our object from ID
# if it had no references it should have been GC'd and we should get an
# rb_eRangeError "is not id value" (expected) or "is recycled object" (possible)
obj = ObjectSpace._id2ref( obj_id )
return obj
end
def []=( key, object )
# FixNum have a constant ID for value, so can't be copied and can't be garbage collected
# so object.__id__ cannot be a reference to a child of object and therefore cannot prevent
# garbage collection on the object
super( key.to_sym, object.__id__ )
end
end
##################################################
weak_hash = Hash::Weak.new
class TestClass
end
test_object = TestClass.new
puts 'storing test object'
weak_hash[ :key ] = test_object
puts 'hash now contains object id: ' + weak_hash.pretty_inspect
print 'retrieving stored test object from hash (should work/be non-nil): '
valid_key = weak_hash[ :key ]
pp valid_key
class AnotherClass
end
puts 'setting variable referring to test object (ID: ' + test_object.__id__.to_s + ') to nil'
test_object = nil
puts 'ID for variable referring to test object is now: ' + test_object.__id__.to_s
print 'getting test object (should fail with rb_eRangeError): '
invalid_key = weak_hash[ :key ]
pp invalid_key
# error - returns valid key
##################################################
# object is created, given an id
# variable is assigned to id
# variable is changed to new object (including nil)
# variable gets the id of new object
# previous reference made by variable remains in object space (no valid references)
# gc starts
# rb_gc_mark calls gc_mark, marks VM instance (#<RubyVM:0x000001008700b8>)
# gc_mark calls gc_mark_children, marks all children of VM
# first, the VM class (RubyVM), and then its children
# then its class instance (#<Class:RubyVM>), and then its children
# then its class instance (#<Class:#<Class:RubyVM>>) and its children
# then its class instance (#<Class:#<Class:Class>>) and its children
# then gc_mark_children calls mark_tbl to mark its table (the class table)
# mark_tbl marks all children of the class table, starting with Class
# Class marks its children, first of all #<Class:Module>
# #<Class:Module> marks its children, first of all #<Class:#<Class:Module>>
# #<Class:#<Class:Module>> marks its children, which includes a table of classes
# mark_tbl marks each of classes, which first includes #<Class:Object>
# #<Class:Object> has a table of entries that it marks, first of all Object
# Object has a table that it marks, first of all its binding context (presumably main first?) #<Binding:0x00000100870068>
# #<Binding:0x00000100870068> marks its children, which calls binding_mark, which calls rb_gc_mark, which calls gc_mark on the Ruby environment: #<RubyVM::Env:0x00000100854bd8>
# #<RubyVM::Env:0x00000100854bd8> marks its children which calls env_mark
# env_mark calls rb_gc_mark_locations on the range covered by the environment's declared memory space, which calls gc_mark_locations
# gc_mark_locations calls mark_locations_array on the space marked by the start and length of environment
# mark_locations_array looks at the environment as an array of long, and calls is_pointer_to_heap on each one
# if (long)slice is the address of a valid pointer on the heap, returns TRUE, which causes gc_mark to be called on the object
#***** object, defined by ID, matches with (long)slice because it has not yet been collected; it is therefore marked as still existing because it has a valid pointer
# => if this were true, no object would ever be garbage collected; so how is any object ever garbage collected?
Any help understanding what's going on is much appreciated.
Thanks,
Asher