From: Rei.Odaira@... Date: 2014-04-03T09:17:00+00:00 Subject: [ruby-core:61829] [ruby-trunk - Bug #9454] The define_method(:class) segfault Issue #9454 has been updated by Rei Odaira. FYI, `TestException#test_machine_stackoverflow_by_define_method` fails on my environment, too: Linux 2.6.32-71.el6.x86_64 and glibc 2.12-1.7.el6. ~~~ $ ruby -v ruby 2.2.0dev (2014-04-01 trunk 45498) [x86_64-linux] ~~~ The problem is that `pthread_attr_getstack()` and even `getrlimit()` return 0xa00000 (= 10 MB) as a max stack size, but the actual stack size at the time of the stack overflow seems bigger by about 2 MB, according to /proc/PID/maps. ~~~ 7fe1f7664000-7fe1f7afe000 rw-p 00000000 00:00 0 [heap] 7fffc0836000-7fffc1435000 rw-p 00000000 00:00 0 [stack] 7fffc15d4000-7fffc15d5000 r-xp 00000000 00:00 0 [vdso] ~~~ 0x7fffc1435000 - 0x7fffc1435000 = 0xbff000 (= ~12 MB). As a result, the address causing SIGSEGV is not considered as part of the stack. ---------------------------------------- Bug #9454: The define_method(:class) segfault https://bugs.ruby-lang.org/issues/9454#change-46055 * Author: Kyrylo Silin * Status: Closed * Priority: Normal * Assignee: * Category: * Target version: * ruby -v: ruby 2.1.0p0 (2013-12-25 revision 44422) [x86_64-linux] * Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN, 2.1: UNKNOWN ---------------------------------------- Ruby 2.1.0p0 segfaults when I invoke the following code. define_method(:class) { self.class } self.class #=> segfault :( It affects exclusively Ruby 2.1.0p0 (I also tested on the most recent 2.0.0, 1.9.3 and 1.8.7). By the way, on the contrary, the following code *does not segfault*. def self.class; self.class end self.class #=> SystemStackError Viva la Ucraino revoluci��n! ---Files-------------------------------- bug9454.txt (625 KB) -- https://bugs.ruby-lang.org/