[#56333] [CommonRuby - Feature #8723][Open] Array.any? predicate returns true for empty array. — "nurettin (Nurettin Onur TUGCU)" <onurtugcu@...>
[#56368] [ruby-trunk - Bug #8730][Open] "rescue Exception" rescues Timeout::ExitException — "takiuchi (Genki Takiuchi)" <[email protected]>
2013/8/28 nobu (Nobuyoshi Nakada) <[email protected]>:
[#56389] [ruby-trunk - Feature #8738][Open] Integer#single_bit? (Actually Fixnum#single_bit? and Bignum#single_bit?) — "akr (Akira Tanaka)" <akr@...>
[#56407] [ruby-trunk - misc #8741][Open] email notification on bugs.ruby-lang.org is broken — "rits (First Last)" <redmine@...>
[#56517] Re: [ruby-cvs:49638] zzak:r42496 (trunk): * lib/time.rb: [DOC] Document constants by @markijbema [Fixes GH-377] — Tanaka Akira <akr@...>
2013/8/11 <[email protected]>:
[#56523] [ruby-trunk - Bug #8769][Open] [PATCH] process.c (rb_fork_internal): remove cloexec setting — "normalperson (Eric Wong)" <normalperson@...>
[#56524] [ruby-trunk - Bug #8770][Open] [PATCH] process.c: avoid EINTR from Process.spawn — "normalperson (Eric Wong)" <normalperson@...>
[#56536] [ruby-trunk - Feature #8772][Open] Hash alias #| merge, and the case for Hash and Array polymorphism — "trans (Thomas Sawyer)" <redmine@...>
[#56551] [CommonRuby - Feature #8777][Open] Process.mach_absolute_time — "tenderlovemaking (Aaron Patterson)" <tenderlove@...>
[#56567] [ruby-trunk - Feature #8780][Assigned] DBM#to_h alias for #to_hash — "zzak (Zachary Scott)" <e@...>
[#56569] [ruby-trunk - Feature #8781][Open] Use require_relative() instead of require() if possible — "ko1 (Koichi Sasada)" <redmine@...>
(2013/08/12 15:35), ko1 (Koichi Sasada) wrote:
(2013/08/13 2:25), drbrain (Eric Hodel) wrote:
On Tue, Aug 13, 2013 at 07:38:01AM +0900, SASADA Koichi wrote:
(2013/08/16 14:21), Aaron Patterson wrote:
On Fri, Aug 16, 2013 at 03:00:59PM +0900, SASADA Koichi wrote:
Em 16-08-2013 03:24, Aaron Patterson escreveu:
On Fri, Aug 16, 2013 at 09:35:04AM -0300, Rodrigo Rosenfeld Rosas wrote:
On Sat, Aug 17, 2013 at 07:17:50AM +0900, trans (Thomas Sawyer) wrote:
(13/08/17 13:13), Aaron Patterson wrote:
[#56634] [ruby-trunk - Feature #8788][Open] use eventfd on newer Linux instead of pipe for timer thread — "normalperson (Eric Wong)" <normalperson@...>
(2013/08/16 10:47), normalperson (Eric Wong) wrote:
SASADA Koichi <[email protected]> wrote:
Hi
KOSAKI Motohiro <[email protected]> wrote:
[#56658] [ruby-trunk - Feature #8796][Open] Use GMP to accelerate Bignum operations — "akr (Akira Tanaka)" <akr@...>
[#56672] Re: [ruby-cvs:49733] eregon:r42591 (trunk): * process.c (rb_clock_gettime): document CLOCK_REALTIME and — Tanaka Akira <akr@...>
2013/8/17 <[email protected]>:
On 17 August 2013 02:52, Tanaka Akira <[email protected]> wrote:
[#56746] [ruby-trunk - Bug #8803][Open] Another buffer overflow — "user021 (a s)" <user021@...>
[#56753] [ruby-trunk - Feature #8804][Open] ONCE syntax — "ko1 (Koichi Sasada)" <redmine@...>
[#56762] [ruby-trunk - Bug #8805][Open] Ruby GC::Profiler returns incorrect info on Solaris (and relatives) — "sax (Eric Saxby)" <sax@...>
[#56780] [ruby-trunk - Feature #8809][Open] Process.clock_getres — "akr (Akira Tanaka)" <akr@...>
[#56795] [ruby-trunk - Bug #8816][Open] Tempfile.new may return the same name for parallel calls — "375gnu (Hleb Valoshka)" <redmine@...>
[#56809] [ruby-trunk - Feature #8820][Open] Speed up Array#index — "trans (Thomas Sawyer)" <redmine@...>
"trans (Thomas Sawyer)" <[email protected]> wrote:
[#56824] [ruby-trunk - Feature #8823][Open] Run trap handler in an independent thread called "Signal thread" — "ko1 (Koichi Sasada)" <redmine@...>
2013/8/27 ko1 (Koichi Sasada) <[email protected]>:
[#56839] [ANN] Ruby Developer Meeting 20130831 — "NARUSE, Yui" <naruse@...>
Hi,
Hi,
[#56861] [ruby-trunk - Feature #3620] Add Queue, SIzedQueue and ConditionVariable implementations in C in addition to ruby ones — "ko1 (Koichi Sasada)" <redmine@...>
"ko1 (Koichi Sasada)" <[email protected]> wrote:
[#56866] [ruby-trunk - Feature #8834][Open] Kernel#load_relative — "sawa (Tsuyoshi Sawada)" <sawadatsuyoshi@...>
[#56890] [ruby-trunk - Feature #8839][Open] Class and module should return the class or module that was opened — "headius (Charles Nutter)" <headius@...>
[#56894] [ruby-trunk - Feature #8840][Open] Yielder#state — "marcandre (Marc-Andre Lafortune)" <ruby-core@...>
[#56911] [ruby-trunk - Feature #8846][Open] Publicize Module#include — "matsuda (Akira Matsuda)" <ronnie@...>
[ruby-core:56798] [ruby-trunk - Feature #6216] SystemStackError backtraces should not be reduced to one line
Issue #6216 has been updated by thedarkone (Vit Z).
=begin
I'm not sure @matz/@ko1 understood what @postmodern was trying to describe.
Given an (({overlfow.rb})) ruby program:
200.times do |i|
eval <<-RUBY_EVAL, nil, __FILE__, __LINE__ + 1
def foo_#{i}(&block)
foo_#{i+1}(&block)
end
RUBY_EVAL
def foo_200
yield
end
end
def bar
foo_0 { bar }
end
bar
When run on ruby 2.0, this is the output:
vit@localhost ~> ruby -v overflow.rb
ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-darwin12.2.0]
overflow.rb:4: stack level too deep (SystemStackError)
As can be seen, only a single line of backtrace data is provided, thus the only thing that is known - is the stack was blown while executing a (({foo_x})) method, but none of the (({foo_x})) methods are recursive (the real culprit is the (({bar})) method). Debugging an error like that is nigh impossible on Ruby 2.0.
Contrast this with other VMs:
rbx:
vit@localhost ~> ruby -v overflow.rb
rubinius 2.0.0.rc1 (1.9.3 release yyyy-mm-dd JI) [x86_64-apple-darwin12.2.0]
An exception occurred running overflow.rb
SystemStackError (SystemStackError)
Backtrace:
Object#foo_141 at overflow.rb:7
Object#foo_140 at overflow.rb:8
Object#foo_139 at overflow.rb:8
[ snip ... ]
Object#foo_1 at overflow.rb:8
Object#foo_0 at overflow.rb:8
Object#bar at overflow.rb:14
Object#__script__ at overflow.rb:17
Rubinius::CodeLoader#load_script at kernel/delta/codeloader.rb:68
Rubinius::CodeLoader.load_script at kernel/delta/codeloader.rb:119
Rubinius::Loader#script at kernel/loader.rb:620
Rubinius::Loader#main at kernel/loader.rb:821
MRI 1.8:
vit@localhost ~> ruby -v overflow.rb
ruby 1.8.7 (2012-02-08 MBARI 8/0x6770 on patchlevel 358) [i686-darwin12.2.0], MBARI 0x6770, Ruby Enterprise Edition 2012.02
overflow.rb:4:in `foo_44': stack level too deep (SystemStackError)
from overflow.rb:4:in `foo_43'
from overflow.rb:4:in `foo_42'
from overflow.rb:4:in `foo_41'
from overflow.rb:4:in `foo_40'
from overflow.rb:4:in `foo_39'
from overflow.rb:4:in `foo_38'
from overflow.rb:4:in `foo_37'
from overflow.rb:4:in `foo_36'
... 5312 levels...
from overflow.rb:4:in `foo_1'
from overflow.rb:4:in `foo_0'
from overflow.rb:14:in `bar'
from overflow.rb:17
=end
----------------------------------------
Feature #6216: SystemStackError backtraces should not be reduced to one line
https://bugs.ruby-lang.org/issues/6216#change-41339
Author: postmodern (Hal Brodigan)
Status: Assigned
Priority: Normal
Assignee: ko1 (Koichi Sasada)
Category: core
Target version: next minor
When debugging "SystemStackError: stack level too deep" exceptions, it is not helpful that the backtrace is reduced to one single line. Most of the time Ruby incorrectly identifies where cycles begin, resulting in an unrelated "file:line" as the backtrace. A more useful behaviour would be to print the last 30 lines of the backtrace, and have the developer identify which "file:line" is causing the cycle. This is similar to how JRuby handles SystemStackError backtraces.
--
http://bugs.ruby-lang.org/