Bug #9003

Range.new on objects without <=> but with Comparable does raise SystemStackError, and if this is catched it crash in "Segmentation fault"

Added by Hans Mackowiak 6 months ago. Updated 3 months ago.

[ruby-core:57736]
Status:Closed
Priority:Urgent
Assignee:-
Category:-
Target version:-
ruby -v:ruby 2.1.0dev (2013-10-09) [x86_64-darwin12.5.0] Backport:1.9.3: DONE, 2.0.0: DONE

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) [x8664-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

Associated revisions

Revision 43208
Added by Nobuyoshi Nakada 6 months ago

compar.c: fail if recursion

  • compar.c (cmp_eq): fail if recursion. [Bug #9003]
  • thread.c (rbexecrecursivepairedouter): new function which is combinnation of paired and outer variants.

History

#1 Updated by Hans Mackowiak 6 months ago

about JRuby ... i heard that it ignores the "rescue SystemStackError" clause ... i try to file an bug somewhere

#2 Updated by Nobuyoshi Nakada 6 months 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. [Bug #9003]
  • thread.c (rbexecrecursivepairedouter): new function which is combinnation of paired and outer variants.

#3 Updated by Nobuyoshi Nakada 6 months ago

  • Description updated (diff)
  • Backport changed from 1.9.3: UNKNOWN, 2.0.0: UNKNOWN to 1.9.3: REQUIRED, 2.0.0: REQUIRED

#4 Updated by Tomoyuki Chikanaga 6 months ago

  • Backport changed from 1.9.3: REQUIRED, 2.0.0: REQUIRED to 1.9.3: REQUIRED, 2.0.0: DONE

backport r43208 to ruby20_0 at r43230.

#5 Updated by Usaku NAKAMURA 3 months ago

  • Backport changed from 1.9.3: REQUIRED, 2.0.0: DONE to 1.9.3: DONE, 2.0.0: DONE

backported into ruby19_3 at r44742.

Also available in: Atom PDF