Issue #9377 has been updated by Nobuyoshi Nakada.

Description updated

----------------------------------------
Bug #9377: Seg fault on call of missing super from self.extended in a Module
https://bugs.ruby-lang.org/issues/9377#change-45322

* Author: Joe McIlvain
* Status: Closed
* Priority: Normal
* Assignee: 
* Category: 
* Target version: 
* ruby -v: 2.1.0
* Backport: 1.9.3: DONTNEED, 2.0.0: DONE, 2.1: REQUIRED
----------------------------------------
Seg fault on call of missing super from `self.extended` in a Module
on 2.1.0-p0 and on 2.1.0-dev
x86_64 linux

Code to reproduce:

```ruby
module A
  def foo; super end

  def self.extended(obj)
    instance_method(:foo).bind(obj).call
  end
end

Object.new.extend A
```
(stack trace is attached)

Note that calling from after extend is okay: (but raises missing super error)

```ruby
module A
  def foo; super end
end

Object.new.extend(A).foo #=> in `foo': super: no superclass method `foo' for #<Object:0x007fabf43d2730> (NoMethodError)
```

Also note that calling from within the extend as before, but having the method defined is also okay (and raises no error)

```ruby
module ABase
  def foo; end
end

module A
  include ABase
  def foo; super end

  def self.extended(obj)
    instance_method(:foo).bind(obj).call
  end
end

Object.new.extend A
```


---Files--------------------------------
segfault.txt (10 KB)


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