[ruby-core:77403] [Ruby trunk Bug#6783][Open] Infinite loop in inspect, not overriding inspect, to_s, and no known circular references. Stepping into inspect in debugger locks it up with 100% CPU.
From:
shyouhei@...
Date:
2016-09-26 11:07:05 UTC
List:
ruby-core #77403
Issue #6783 has been updated by Shyouhei Urabe.
Status changed from Closed to Open
reopen as per request (seems like it is no longer a bug ticket but a feature request?)
----------------------------------------
Bug #6783: Infinite loop in inspect, not overriding inspect, to_s, and no known circular references. Stepping into inspect in debugger locks it up with 100% CPU.
https://bugs.ruby-lang.org/issues/6783#change-60658
* Author: Gary Weaver
* Status: Open
* Priority: Normal
* Assignee:
* ruby -v: ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-darwin11.4.0]
* Backport: 2.1: UNKNOWN, 2.2: UNKNOWN, 2.3: UNKNOWN
----------------------------------------
In Ruby 1.9.3p194 in Rails 3.2.6 in rails console, in my script I'm calling inspect on a Ruby object and even though I'm not overriding inspect, to_s, and there are no known circular references, inspect is going into an infinite loop locking Ruby up with 100% CPU usage.
At first, I would think this problem is probably outside of Ruby and either in my code or in a gem that I'm using, however the problem is that using the Debugger gem, if I set a breakpoint above the issue and use "s" (by itself) to step into the line where it calls inspect, it locks up there, so I can't debug the issue. When I do that I hit ctrl-c, I'm in .../.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/irb.rb:
64 trap("SIGINT") do
=> 65 irb.signal_handle
66 end
and breaking out of that, or if I don't step into it and I break out of it, I see:
path_to_script/script_name.rb:739:in `call'
path_to_script/script_name.rb:739:in `inspect'
path_to_script/script_name.rb:739:in `inspect'
...
(~100 times)
path_to_script/script_name.rb:739:in `block (2 levels) in my_method_name'
In a situation like this, how can I debug the issue? Is there anything in the inspect method that could causing this behavior?
I think the most likely culprit is some bad code on my part in the script, but unfortunately I can't debug it when the debugger can't step into inspect.
Thanks for any help you can provide.
--
https://bugs.ruby-lang.org/
Unsubscribe: <mailto:[email protected]?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>