[#70257] [Ruby trunk - Feature #11420] [Open] Introduce ID key table into MRI — ko1@...

Issue #11420 has been reported by Koichi Sasada.

11 messages 2015/08/06

[ruby-core:70228] [Ruby trunk - Bug #11409] {instance, module}_eval(&:foo) segfaults since r51243.

From: 0x0dea+redmine@...
Date: 2015-08-03 06:54:12 UTC
List: ruby-core #70228
Issue #11409 has been updated by D.E. Akers.


Koichi Sasada wrote:
> Thank you for reporting a bug and your detailed analysis.
> They help me very much.

I am happy to have been of some assistance.
 
> I believe `obj' should be Qfalse...

It's true that changing that `Qnil` to `Qfalse` is the "cleaner" fix this time around, but I think using `RTEST()` to check for both is slightly more future-proof. I've submitted a pull request which takes the latter approach, in addition to adding a couple of tests to ensure something like this will be caught in future. I shall take no offense if your much greater familiarity with YARV tells you that using `Qfalse` there is the better solution.

----------------------------------------
Bug #11409: {instance,module}_eval(&:foo) segfaults since r51243.
https://bugs.ruby-lang.org/issues/11409#change-53656

* Author: D.E. Akers
* Status: Assigned
* Priority: Normal
* Assignee: Koichi Sasada
* ruby -v: ruby 2.3.0dev (2015-08-02 trunk 51469) [x86_64-linux]
* Backport: 
----------------------------------------
The segfault only occurs when the argument is a `#to_proc`'d Symbol, and the receiver needn't actually respond to the named method.

This bug was introduced in [a rather large patch](http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=51243), and should almost certainly be fixed in one of the files modified therein. That said, I've discovered that removing the call to `rb_block_clear_env_self()` in `sym_to_proc()` prevents the segfault, as does setting `env->env[0]` to `Qfalse` rather than `Qnil` in `rb_block_clear_env_self()`. Neither of those is a proper fix, of course, but I hope this information may be of use to somebody more intimately familiar with Ruby's internals.



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

In This Thread

Prev Next