From: nobu@... Date: 2014-04-03T06:38:40+00:00 Subject: [ruby-core:61823] [ruby-trunk - Bug #9683] Segmentation fault when using default proc feature in ruby Hash object Issue #9683 has been updated by Nobuyoshi Nakada. There are two stacks, VM stack and machine stack. > def foo; foo end causes VM stack overflow, but recursive default proc causes machine stack overflow. The former is detected by the VM, so no dirty pages is used. Your patch prevents infinite recursion before it actually occurs, and would be more effective. However, there can be other recursion calls, I'd want the way to fix them before applying it. ---------------------------------------- Bug #9683: Segmentation fault when using default proc feature in ruby Hash object https://bugs.ruby-lang.org/issues/9683#change-46051 * Author: Eran Barak Levi * Status: Open * Priority: Normal * Assignee: * Category: * Target version: * ruby -v: ruby 2.1.0p0 (2013-12-25 revision 44422) [x86_64-darwin12.0] * Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN ---------------------------------------- ��� bruno-v2 rvm:(ruby-2.1.0) git:(master) ��� uname -a Darwin erans-mbp.intkontera.com 13.1.0 Darwin Kernel Version 13.1.0: Thu Jan 16 19:40:37 PST 2014; root:xnu-2422.90.20~2/RELEASE_X86_64 x86_64 ��� bruno-v2 rvm:(ruby-2.1.0) git:(master) ��� rvm -v rvm 1.25.19 (stable) by Wayne E. Seguin , Michal Papis [https://rvm.io/] ��� bruno-v2 rvm:(ruby-2.1.0) git:(master) ��� ruby -v ruby 2.1.0p0 (2013-12-25 revision 44422) [x86_64-darwin12.0] ��� bruno-v2 rvm:(ruby-2.1.0) git:(master) ��� ruby -e "a = Hash.new {|h,k| h[k] += 1};a[1]" 2> output [1] 24934 segmentation fault ruby -e "a = Hash.new {|h,k| h[k] += 1};a[1]" 2> output more information in the attached files ---Files-------------------------------- ruby_2014-03-27-153720_Erans-MacBook-Pro.crash (45.3 KB) output (489 KB) 9683.patch (1.31 KB) -- https://bugs.ruby-lang.org/