Project

General

Profile

Actions

Bug #18458

closed

Segmentation fault when missing Warning#warn method

Added by etienne (Étienne Barrié) 6 months ago. Updated 4 months ago.

Status:
Closed
Priority:
Normal
Assignee:
-
Target version:
-
[ruby-core:106962]

Description

If you remove the Warning#warn method and call Kernel#warn, you get a segmentation fault:

ruby 3.1.0:

$ ruby -e 'Warning.undef_method(:warn); warn ""' 2>&1 | head -2                                                                                                                                                                                                                    
<internal:warning>:51: [BUG] Segmentation fault at 0x0000000000000010
ruby 3.1.0p0 (2021-12-25 revision fb4df44d16) [x86_64-darwin21]

It's not new, you get the same with 3.0.3:

$ ruby -e 'Warning.undef_method(:warn); warn ""' 2>&1 | head -2                                                                                                                                                                                                                    
<internal:warning>:51: [BUG] Segmentation fault at 0x0000000000000010
ruby 3.0.3p157 (2021-11-24 revision 3fb7d2cadc) [x86_64-darwin20]

In 2.7 though you get a NoMethodError exception:

$ ruby --disable-all -e 'Warning.undef_method(:warn); warn ""'
Traceback (most recent call last):
	1: from -e:1:in `<main>'
<internal:warning>:43:in `warn': undefined method `warn' for Warning:Module (NoMethodError)

(I disabled gems because rubygems core extensions adds two lines of backtrace, but it's the same result in the end)

Actions

Also available in: Atom PDF