[#84280] [Ruby trunk Bug#14181] hangs or deadlocks from waitpid, threads, and trapping SIGCHLD — nobu@...
Issue #14181 has been updated by nobu (Nobuyoshi Nakada).
3 messages
2017/12/15
[#84398] [Ruby trunk Bug#14220] WEBrick changes - failures on MSWIN, MinGW — Greg.mpls@...
Issue #14220 has been reported by MSP-Greg (Greg L).
3 messages
2017/12/22
[#84472] Re: [ruby-dev:50394] [Ruby trunk Bug#14240] warn four special variables: $; $, $/ $\ — Eric Wong <normalperson@...>
Shouldn't English posts be on ruby-core instead of ruby-dev?
3 messages
2017/12/26
[ruby-core:84245] [Ruby trunk Bug#14179] Forwardable Segmentation fault ruby 2.2.8p477 (2017-09-14 revision 59906)
From:
dadah89@...
Date:
2017-12-14 03:43:31 UTC
List:
ruby-core #84245
Issue #14179 has been reported by dadah89 (Igor Justino).
----------------------------------------
Bug #14179: Forwardable Segmentation fault ruby 2.2.8p477 (2017-09-14 revision 59906)
https://bugs.ruby-lang.org/issues/14179
* Author: dadah89 (Igor Justino)
* Status: Open
* Priority: Normal
* Assignee:
* Target version:
* ruby -v: ruby 2.2.8p477 (2017-09-14 revision 59906)
* Backport: 2.3: UNKNOWN, 2.4: UNKNOWN
----------------------------------------
Hello,
Delegating `backtrace` causes a segmentation fault on ruby 2.2.8.
Seems to be related to this change: https://github.com/ruby/ruby/commit/a14ba6e3d58d6f63f47c0549f60306c4989478ba
Looking at that change, seems like the `$@` call on line 207 would cause an infinite loop (assuming $@ would execute something similar $!.backtrace, but I'm not sure how $@ is implemented).
Example:
```
irb(main):052:0> class WrappedException < StandardError
irb(main):053:1> extend Forwardable
irb(main):054:1>
irb(main):055:1* def_delegators :@err, :backtrace
irb(main):056:1>
irb(main):057:1* def initialize(err)
irb(main):058:2> @err = err
irb(main):059:2> end
irb(main):060:1> end
=> :initialize
irb(main):061:0>
irb(main):062:0* begin
irb(main):063:1* raise WrappedException, StandardError.new('test')
irb(main):064:1> rescue => e
irb(main):065:1> e.backtrace
irb(main):066:1> end
Segmentation fault
```
```
irb(main):031:0> class WrappedException < StandardError
irb(main):032:1> extend Forwardable
irb(main):033:1>
irb(main):034:1* def_delegators :@err, :backtrace
irb(main):035:1>
irb(main):036:1* def initialize(err)
irb(main):037:2> @err = err
irb(main):038:2> end
irb(main):039:1> end
=> :initialize
irb(main):040:0>
irb(main):041:0* begin
irb(main):042:1* raise WrappedException, StandardError.new('test')
irb(main):043:1> rescue => e
irb(main):044:1> e.backtrace
irb(main):045:1> end
RuntimeError: can't modify frozen SystemStackError
from /opt/.rbenv/versions/2.2.8/lib/ruby/2.2.0/forwardable.rb:207:in `backtrace'
from /opt/.rbenv/versions/2.2.8/lib/ruby/2.2.0/forwardable.rb:207:in `backtrace'
from /opt/.rbenv/versions/2.2.8/lib/ruby/2.2.0/forwardable.rb:207:in `backtrace'
from /opt/.rbenv/versions/2.2.8/lib/ruby/2.2.0/forwardable.rb:207:in `backtrace'
from /opt/.rbenv/versions/2.2.8/lib/ruby/2.2.0/forwardable.rb:207:in `backtrace'
from /opt/.rbenv/versions/2.2.8/lib/ruby/2.2.0/forwardable.rb:207:in `backtrace'
from /opt/.rbenv/versions/2.2.8/lib/ruby/2.2.0/forwardable.rb:207:in `backtrace'
from /opt/.rbenv/versions/2.2.8/lib/ruby/2.2.0/forwardable.rb:207:in `backtrace'
from /opt/.rbenv/versions/2.2.8/lib/ruby/2.2.0/forwardable.rb:207:in `backtrace'
from /opt/.rbenv/versions/2.2.8/lib/ruby/2.2.0/forwardable.rb:207:in `backtrace'
from /opt/.rbenv/versions/2.2.8/lib/ruby/2.2.0/forwardable.rb:207:in `backtrace'
from /opt/.rbenv/versions/2.2.8/lib/ruby/2.2.0/forwardable.rb:207:in `backtrace'
from /opt/.rbenv/versions/2.2.8/lib/ruby/2.2.0/forwardable.rb:207:in `backtrace'
from /opt/.rbenv/versions/2.2.8/lib/ruby/2.2.0/forwardable.rb:207:in `backtrace'
from /opt/.rbenv/versions/2.2.8/lib/ruby/2.2.0/forwardable.rb:207:in `backtrace'
from /opt/.rbenv/versions/2.2.8/lib/ruby/2.2.0/forwardable.rb:207:in `backtrace'
... 5481 levels...
from /opt/.rbenv/versions/2.2.8/lib/ruby/2.2.0/forwardable.rb:207:in `backtrace'
from /opt/.rbenv/versions/2.2.8/lib/ruby/2.2.0/forwardable.rb:207:in `backtrace'
from /opt/.rbenv/versions/2.2.8/lib/ruby/2.2.0/forwardable.rb:207:in `backtrace'
from /opt/.rbenv/versions/2.2.8/lib/ruby/2.2.0/forwardable.rb:207:in `backtrace'
from /opt/.rbenv/versions/2.2.8/lib/ruby/2.2.0/forwardable.rb:207:in `backtrace'
from /opt/.rbenv/versions/2.2.8/lib/ruby/2.2.0/forwardable.rb:207:in `backtrace'
from /opt/.rbenv/versions/2.2.8/lib/ruby/2.2.0/forwardable.rb:207:in `backtrace'
from /opt/.rbenv/versions/2.2.8/lib/ruby/2.2.0/forwardable.rb:207:in `backtrace'
from /opt/.rbenv/versions/2.2.8/lib/ruby/2.2.0/forwardable.rb:207:in `backtrace'
from /opt/.rbenv/versions/2.2.8/lib/ruby/2.2.0/forwardable.rb:207:in `backtrace'
from /opt/.rbenv/versions/2.2.8/lib/ruby/2.2.0/forwardable.rb:207:in `backtrace'
from /opt/.rbenv/versions/2.2.8/lib/ruby/2.2.0/forwardable.rb:207:in `backtrace'
from /opt/.rbenv/versions/2.2.8/lib/ruby/2.2.0/forwardable.rb:207:in `backtrace'
from (irb):44:in `rescue in irb_binding'
from (irb):41
from /opt/.rbenv/versions/2.2.8/bin/irb:11:in `<main>'
irb(main):046:0>
```
--
https://bugs.ruby-lang.org/
Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>