Issue #10290 has been updated by Jack Nagel.

File ruby_2014-09-25-001644_haswell.log added

As I noted, running the example code on trunk does not segfault (it raises SystemStackError a second time, as I would expect):

```
$ ruby -ve "l = -> { l.() }; begin; l.(); rescue SystemStackError; l.(); end"
ruby 2.2.0dev (2014-09-25 trunk 47651) [x86_64-darwin13]
-e:1:in `block in <main>': stack level too deep (SystemStackError)
	from -e:1:in `call'
	from -e:1:in `block in <main>'
	from -e:1:in `call'
	from -e:1:in `block in <main>'
	from -e:1:in `call'
	from -e:1:in `block in <main>'
	from -e:1:in `call'
	from -e:1:in `block in <main>'
	 ... 9604 levels...
	from -e:1:in `call'
	from -e:1:in `block in <main>'
	from -e:1:in `call'
	from -e:1:in `<main>'
```

However, if I run the same code in IRB, it *does* segfault:

```
$ irb
irb(main):001:0> RUBY_DESCRIPTION
=> "ruby 2.2.0dev (2014-09-25 trunk 47651) [x86_64-darwin13]"
irb(main):002:0> l = -> { l.() }; begin; l.(); rescue SystemStackError; l.(); end
Segmentation fault: 11
```

I've attached the crash report for this one as well.

----------------------------------------
Bug #10290: segfault when calling a lambda recursively after rescuing SystemStackError
https://bugs.ruby-lang.org/issues/10290#change-49093

* Author: Jack Nagel
* Status: Open
* Priority: Normal
* Assignee: 
* Category: 
* Target version: 
* ruby -v: ruby 2.1.3p242 (2014-09-19 revision 47629) [x86_64-darwin13.0]
* Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN
----------------------------------------
The following code segfaults on Ruby 2.1.3:

```
l = -> { l.() }

begin
  l.()
rescue SystemStackError
  l.() # segfault
end
```

the issue does not occur on trunk.

---Files--------------------------------
ruby_2014-09-25-000925_haswell.log (46.4 KB)
ruby_2014-09-25-001644_haswell.log (46.8 KB)


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