[#61424] [REJECT?] xmalloc/xfree: reduce atomic ops w/ thread-locals — Eric Wong <normalperson@...>

I'm unsure about this. I _hate_ the extra branches this adds;

13 messages 2014/03/12

[ruby-core:61437] [ruby-trunk - Bug #9626] [Open] alias, prepend and super cause unexpected SystemStackError

From: eagletmt@...
Date: 2014-03-12 15:14:16 UTC
List: ruby-core #61437
Issue #9626 has been reported by Kohei Suzuki.

----------------------------------------
Bug #9626: alias, prepend and super cause unexpected SystemStackError
https://bugs.ruby-lang.org/issues/9626

* Author: Kohei Suzuki
* Status: Open
* Priority: Normal
* Assignee: 
* Category: 
* Target version: 
* ruby -v: ruby 2.1.1p76 (2014-02-24 revision 45161) [x86_64-linux]
* Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN, 2.1: UNKNOWN
----------------------------------------
```ruby
module M
  def foo
    super
  end
end

class C
  def foo
    'C#foo'
  end

  prepend M
  alias_method :orig_foo, :foo
  def foo
    orig_foo
  end
end

C.new.foo
```

I expect: M#foo -> C#foo -> C#orig_foo and get 'C#foo'
Actual: M#foo -> C#foo -> M#foo -> ... and get `stack level too deep (SystemStackError)`
If I swap the order of `alias_method` and `prepend`, it works as I expect.

I think it's closely related to #7842.



-- 
http://bugs.ruby-lang.org/

In This Thread

Prev Next