-
-
Notifications
You must be signed in to change notification settings - Fork 2k
Fix SystemStackError (stack level too deep) in GemHelper#sh_with_code #6657
Conversation
The method always calls itself recursively. It can be supposed that `sh_with_status` should be called rather than `sh_with_code` because Process::Status is called later on.
Thanks for opening a pull request and helping make Bundler better! Someone from the Bundler team will take a look at your pull request shortly and leave any feedback. Please make sure that your pull request has tests for any changes or added functionality. We use Travis CI to test and make sure your change works functionally and uses acceptable conventions, you can review the current progress of Travis CI in the PR status window below. If you have any questions or concerns that you wish to ask, feel free to leave a comment in this PR or join our #bundler channel on Slack. For more information about contributing to the Bundler project feel free to review our CONTRIBUTING guide |
Searching through src, it doesn't look like the method is being used anymore. We can probably remove this method. |
@colby-swandale Thank you for your response. That's make sense. I have removed the method. |
👍🏻 |
Thank you so much! @bundlerbot r+ |
📌 Commit 88ea68f has been approved by |
Fix SystemStackError (stack level too deep) in GemHelper#sh_with_code Hello. I found a method which raises SystemStackError by chance. ### What was the end-user problem that led to this PR? The method always calls itself recursively like as follows: ``` irb(main):006:0> require './lib/bundler/gem_helper' => true irb(main):007:0> Bundler::GemHelper.new.send(:sh_with_code, 'ls') Traceback (most recent call last): 16: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 15: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 14: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 13: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 12: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 11: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 10: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 9: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 8: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 7: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 6: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 5: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 4: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 3: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 2: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 1: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' SystemStackError (stack level too deep) ``` ### What was your diagnosis of the problem? I think that it can be supposed that `sh_with_status` should be called rather than `sh_with_code` because Process::Status#exitstatus is called later on. (related to #6036) After this changes, the result of calling the method is as follows: ``` irb(main):011:0> load './lib/bundler/gem_helper.rb' => true irb(main):012:0> irb(main):013:0> Bundler::GemHelper.new.send(:sh_with_code, 'ls') => ["bin\nbundler.gemspec\nCHANGELOG.md\nCODE_OF_CONDUCT.md\ndoc\nexe\nGemfile\nGemfile.lock\nlib\nLICENSE.md\nman\nRakefile\nREADME.md\nspec\ntask\n", 0] ``` I am not sure if I could remove the method since I cannot have confidence that the method is not used anymore. So I simply fixed it.
💔 Test failed - status-travis |
The test seems failed due to timeout 😢 |
@bundlerbot retry |
Fix SystemStackError (stack level too deep) in GemHelper#sh_with_code Hello. I found a method which raises SystemStackError by chance. ### What was the end-user problem that led to this PR? The method always calls itself recursively like as follows: ``` irb(main):006:0> require './lib/bundler/gem_helper' => true irb(main):007:0> Bundler::GemHelper.new.send(:sh_with_code, 'ls') Traceback (most recent call last): 16: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 15: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 14: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 13: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 12: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 11: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 10: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 9: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 8: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 7: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 6: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 5: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 4: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 3: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 2: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 1: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' SystemStackError (stack level too deep) ``` ### What was your diagnosis of the problem? I think that it can be supposed that `sh_with_status` should be called rather than `sh_with_code` because Process::Status#exitstatus is called later on. (related to #6036) After this changes, the result of calling the method is as follows: ``` irb(main):011:0> load './lib/bundler/gem_helper.rb' => true irb(main):012:0> irb(main):013:0> Bundler::GemHelper.new.send(:sh_with_code, 'ls') => ["bin\nbundler.gemspec\nCHANGELOG.md\nCODE_OF_CONDUCT.md\ndoc\nexe\nGemfile\nGemfile.lock\nlib\nLICENSE.md\nman\nRakefile\nREADME.md\nspec\ntask\n", 0] ``` I am not sure if I could remove the method since I cannot have confidence that the method is not used anymore. So I simply fixed it.
💔 Test failed - status-travis |
@bundlerbot retry |
Fix SystemStackError (stack level too deep) in GemHelper#sh_with_code Hello. I found a method which raises SystemStackError by chance. ### What was the end-user problem that led to this PR? The method always calls itself recursively like as follows: ``` irb(main):006:0> require './lib/bundler/gem_helper' => true irb(main):007:0> Bundler::GemHelper.new.send(:sh_with_code, 'ls') Traceback (most recent call last): 16: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 15: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 14: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 13: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 12: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 11: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 10: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 9: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 8: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 7: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 6: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 5: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 4: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 3: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 2: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 1: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' SystemStackError (stack level too deep) ``` ### What was your diagnosis of the problem? I think that it can be supposed that `sh_with_status` should be called rather than `sh_with_code` because Process::Status#exitstatus is called later on. (related to #6036) After this changes, the result of calling the method is as follows: ``` irb(main):011:0> load './lib/bundler/gem_helper.rb' => true irb(main):012:0> irb(main):013:0> Bundler::GemHelper.new.send(:sh_with_code, 'ls') => ["bin\nbundler.gemspec\nCHANGELOG.md\nCODE_OF_CONDUCT.md\ndoc\nexe\nGemfile\nGemfile.lock\nlib\nLICENSE.md\nman\nRakefile\nREADME.md\nspec\ntask\n", 0] ``` I am not sure if I could remove the method since I cannot have confidence that the method is not used anymore. So I simply fixed it.
💔 Test failed - status-travis |
The tests are still failing. Is there anything I can help with? |
@bundlerbot retry |
Fix SystemStackError (stack level too deep) in GemHelper#sh_with_code Hello. I found a method which raises SystemStackError by chance. ### What was the end-user problem that led to this PR? The method always calls itself recursively like as follows: ``` irb(main):006:0> require './lib/bundler/gem_helper' => true irb(main):007:0> Bundler::GemHelper.new.send(:sh_with_code, 'ls') Traceback (most recent call last): 16: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 15: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 14: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 13: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 12: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 11: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 10: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 9: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 8: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 7: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 6: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 5: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 4: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 3: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 2: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 1: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' SystemStackError (stack level too deep) ``` ### What was your diagnosis of the problem? I think that it can be supposed that `sh_with_status` should be called rather than `sh_with_code` because Process::Status#exitstatus is called later on. (related to #6036) After this changes, the result of calling the method is as follows: ``` irb(main):011:0> load './lib/bundler/gem_helper.rb' => true irb(main):012:0> irb(main):013:0> Bundler::GemHelper.new.send(:sh_with_code, 'ls') => ["bin\nbundler.gemspec\nCHANGELOG.md\nCODE_OF_CONDUCT.md\ndoc\nexe\nGemfile\nGemfile.lock\nlib\nLICENSE.md\nman\nRakefile\nREADME.md\nspec\ntask\n", 0] ``` I am not sure if I could remove the method since I cannot have confidence that the method is not used anymore. So I simply fixed it.
@bundlerbot retry |
Fix SystemStackError (stack level too deep) in GemHelper#sh_with_code Hello. I found a method which raises SystemStackError by chance. ### What was the end-user problem that led to this PR? The method always calls itself recursively like as follows: ``` irb(main):006:0> require './lib/bundler/gem_helper' => true irb(main):007:0> Bundler::GemHelper.new.send(:sh_with_code, 'ls') Traceback (most recent call last): 16: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 15: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 14: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 13: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 12: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 11: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 10: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 9: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 8: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 7: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 6: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 5: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 4: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 3: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 2: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' 1: from /home/hibariya/src/github.com/bundler/bundler/lib/bundler/gem_helper.rb:191:in `sh_with_code' SystemStackError (stack level too deep) ``` ### What was your diagnosis of the problem? I think that it can be supposed that `sh_with_status` should be called rather than `sh_with_code` because Process::Status#exitstatus is called later on. (related to #6036) After this changes, the result of calling the method is as follows: ``` irb(main):011:0> load './lib/bundler/gem_helper.rb' => true irb(main):012:0> irb(main):013:0> Bundler::GemHelper.new.send(:sh_with_code, 'ls') => ["bin\nbundler.gemspec\nCHANGELOG.md\nCODE_OF_CONDUCT.md\ndoc\nexe\nGemfile\nGemfile.lock\nlib\nLICENSE.md\nman\nRakefile\nREADME.md\nspec\ntask\n", 0] ``` I am not sure if I could remove the method since I cannot have confidence that the method is not used anymore. So I simply fixed it.
☀️ Test successful - status-travis |
Hello. I found a method which raises SystemStackError by chance.
What was the end-user problem that led to this PR?
The method always calls itself recursively like as follows:
What was your diagnosis of the problem?
I think that it can be supposed that
sh_with_status
should be called rather thansh_with_code
because Process::Status#exitstatus is called later on.(related to #6036)
After this changes, the result of calling the method is as follows:
I am not sure if I could remove the method since I cannot have confidence that the method is not used anymore. So I simply fixed it.