Bug #9003
closedRange.new on objects without <=> but with Comparable does raise SystemStackError, and if this is catched it crash in "Segmentation fault"
Description
this code causes "Segmentation fault: 11"
o1=Object.new
o1.extend(Comparable)
o2=Object.new
o2.extend(Comparable)
begin
p Range.new(o1,o2) # raises Stack Error
rescue SystemStackError
end
begin
p Range.new(o1,o2) # Segmentation fault: 11
rescue SystemStackError
end
i tested also other ruby versions:
Crashs for versions:
ruby 2.1.0dev (2013-10-09) [x86_64-darwin12.5.0]
ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-darwin12.3.0]
ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-linux]
works for versions:
ruby 2.1.0dev (2013-09-22 trunk 43011) [i686-linux]
ruby 2.0.0p247 (2013-06-27) [i386-mingw32]
ruby 2.0.0p0 (2013-02-24 revision 39474) [i686-linux]
from what i can see it looks like an 64bit problem on MRI
it seems to work on rubinius 64bit
Updated by Hanmac (Hans Mackowiak) about 11 years ago
about JRuby ... i heard that it ignores the "rescue SystemStackError" clause ... i try to file an bug somewhere
Updated by nobu (Nobuyoshi Nakada) about 11 years ago
- Status changed from Open to Closed
- % Done changed from 0 to 100
This issue was solved with changeset r43208.
Hans, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.
compar.c: fail if recursion
- compar.c (cmp_eq): fail if recursion. [ruby-core:57736] [Bug #9003]
- thread.c (rb_exec_recursive_paired_outer): new function which is
combinnation of paired and outer variants.
Updated by nobu (Nobuyoshi Nakada) about 11 years ago
- Description updated (diff)
- Backport changed from 1.9.3: UNKNOWN, 2.0.0: UNKNOWN to 1.9.3: REQUIRED, 2.0.0: REQUIRED
Updated by nagachika (Tomoyuki Chikanaga) about 11 years ago
- Backport changed from 1.9.3: REQUIRED, 2.0.0: REQUIRED to 1.9.3: REQUIRED, 2.0.0: DONE
backport r43208 to ruby_2_0_0 at r43230.
Updated by usa (Usaku NAKAMURA) almost 11 years ago
- Backport changed from 1.9.3: REQUIRED, 2.0.0: DONE to 1.9.3: DONE, 2.0.0: DONE
backported into ruby_1_9_3 at r44742.