Issue #9377 has been updated by Tomoyuki Chikanaga.

Backport changed from 1.9.3: DONTNEED, 2.0.0: REQUIRED, 2.1: REQUIRED to 1.9.3: DONTNEED, 2.0.0: DONE, 2.1: REQUIRED

r44527 was backported to ruby_2_0_0 at r45051.

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

* 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
----------------------------------------
=begin
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:

 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)

 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)

 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
=end


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


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