From: "drkaes (Stefan Kaes)" Date: 2013-04-14T15:36:37+09:00 Subject: [ruby-core:54261] [ruby-trunk - Feature #6216] SystemStackError backtraces should not be reduced to one line Issue #6216 has been updated by drkaes (Stefan Kaes). File stack-overflow.patch added It seems to me that a full backtrace can safely be generated (patch against trunk attached). The one line backtrace behavior was introduced with this patch: https://github.com/shyouhei/ruby/commit/ecd11fb371b5f4a00d0b0006b325de3c5437b8d2 It avoids the crashing call rb_funcall(info, rb_intern("backtrace"), 0), which is performed when one calls get_backtrace(mesg), defined in eval_error.c. On the other hand, rb_make_backtrace() will not grow the stack, as far as I can tell. I've tested the patch with ruby trunk and 1.9.3-p392. The reason I came here is that we were bitten by a SystemStackError in production, which we couldn't reproduce, and the one line information wasn't enough to debug the issue. ---------------------------------------- Feature #6216: SystemStackError backtraces should not be reduced to one line https://bugs.ruby-lang.org/issues/6216#change-38536 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/