Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Intermittent NoMethodError in rspec #3959

Closed
perlun opened this issue Jun 9, 2016 · 2 comments
Closed

Intermittent NoMethodError in rspec #3959

perlun opened this issue Jun 9, 2016 · 2 comments

Comments

@perlun
Copy link
Contributor

perlun commented Jun 9, 2016

I filed rspec/rspec-core#2267 with the rspec project, but they were pretty confident it is a bug in JRuby so hence, rerouting here.

This is with rspec 3.4.1, as can be seen in the stack trace.

I have no real idea on why this is happening, unfortunately. One of my specs is causing a stack level too deep error; could that be what's confusing it somehow?

I did a repro case here: https://github.com/perlun/rspec-bug

It behaves differently with JRuby 1.7 and 9k. 9k never exposes this bug, but 1.7 does intermittently. Has something drastic changed regarding stack overflows on the 9k branch?

NoMethodError: undefined method `example_group_finished' for #<NoMethodError:0x6fd9dbe6>
               run at /Volumes/extra/git/ecraft/ecraft.uxfactory.server-2014.1/src/server/gems/jruby/1.9/gems/rspec-core-3.4.1/lib/rspec/core/example_group.rb:555
         run_specs at /Volumes/extra/git/ecraft/ecraft.uxfactory.server-2014.1/src/server/gems/jruby/1.9/gems/rspec-core-3.4.1/lib/rspec/core/runner.rb:115
               map at org/jruby/RubyArray.java:2414
         run_specs at /Volumes/extra/git/ecraft/ecraft.uxfactory.server-2014.1/src/server/gems/jruby/1.9/gems/rspec-core-3.4.1/lib/rspec/core/runner.rb:115
  with_suite_hooks at /Volumes/extra/git/ecraft/ecraft.uxfactory.server-2014.1/src/server/gems/jruby/1.9/gems/rspec-core-3.4.1/lib/rspec/core/configuration.rb:1680
         run_specs at /Volumes/extra/git/ecraft/ecraft.uxfactory.server-2014.1/src/server/gems/jruby/1.9/gems/rspec-core-3.4.1/lib/rspec/core/runner.rb:114
            report at /Volumes/extra/git/ecraft/ecraft.uxfactory.server-2014.1/src/server/gems/jruby/1.9/gems/rspec-core-3.4.1/lib/rspec/core/reporter.rb:77
         run_specs at /Volumes/extra/git/ecraft/ecraft.uxfactory.server-2014.1/src/server/gems/jruby/1.9/gems/rspec-core-3.4.1/lib/rspec/core/runner.rb:113
               run at /Volumes/extra/git/ecraft/ecraft.uxfactory.server-2014.1/src/server/gems/jruby/1.9/gems/rspec-core-3.4.1/lib/rspec/core/runner.rb:89
               run at /Volumes/extra/git/ecraft/ecraft.uxfactory.server-2014.1/src/server/gems/jruby/1.9/gems/rspec-core-3.4.1/lib/rspec/core/runner.rb:73
            invoke at /Volumes/extra/git/ecraft/ecraft.uxfactory.server-2014.1/src/server/gems/jruby/1.9/gems/rspec-core-3.4.1/lib/rspec/core/runner.rb:41
            (root) at /Volumes/extra/git/ecraft/ecraft.uxfactory.server-2014.1/src/server/gems/jruby/1.9/gems/rspec-core-3.4.1/exe/rspec:4
              load at org/jruby/RubyKernel.java:1059
            (root) at /Volumes/extra/git/ecraft/ecraft.uxfactory.server-2014.1/src/server/gems/jruby/1.9/bin/rspec:1
@olleolleolle
Copy link
Member

Still having this; rspec-core-3.7.0. jruby-1.7.27 on Travis.

The stacktrace was:

NoMethodError: undefined method `example_group_finished' for #<NoMethodError:0x3291d9c2>

               run at /home/travis/build/ecraft/ecraft.uxfactory.server/src/server/gems/jruby/1.9/gems/rspec-core-3.7.0/lib/rspec/core/example_group.rb:602

         run_specs at /home/travis/build/ecraft/ecraft.uxfactory.server/src/server/gems/jruby/1.9/gems/rspec-core-3.7.0/lib/rspec/core/runner.rb:118

           collect at org/jruby/RubyArray.java:2400

               map at org/jruby/RubyArray.java:2414

         run_specs at /home/travis/build/ecraft/ecraft.uxfactory.server/src/server/gems/jruby/1.9/gems/rspec-core-3.7.0/lib/rspec/core/runner.rb:118

  with_suite_hooks at /home/travis/build/ecraft/ecraft.uxfactory.server/src/server/gems/jruby/1.9/gems/rspec-core-3.7.0/lib/rspec/core/configuration.rb:1896

         run_specs at /home/travis/build/ecraft/ecraft.uxfactory.server/src/server/gems/jruby/1.9/gems/rspec-core-3.7.0/lib/rspec/core/runner.rb:113

            report at /home/travis/build/ecraft/ecraft.uxfactory.server/src/server/gems/jruby/1.9/gems/rspec-core-3.7.0/lib/rspec/core/reporter.rb:79

         run_specs at /home/travis/build/ecraft/ecraft.uxfactory.server/src/server/gems/jruby/1.9/gems/rspec-core-3.7.0/lib/rspec/core/runner.rb:112

               run at /home/travis/build/ecraft/ecraft.uxfactory.server/src/server/gems/jruby/1.9/gems/rspec-core-3.7.0/lib/rspec/core/runner.rb:87

               run at /home/travis/build/ecraft/ecraft.uxfactory.server/src/server/gems/jruby/1.9/gems/rspec-core-3.7.0/lib/rspec/core/runner.rb:71

            invoke at /home/travis/build/ecraft/ecraft.uxfactory.server/src/server/gems/jruby/1.9/gems/rspec-core-3.7.0/lib/rspec/core/runner.rb:45

            (root) at /home/travis/build/ecraft/ecraft.uxfactory.server/src/server/gems/jruby/1.9/gems/rspec-core-3.7.0/exe/rspec:4
NoMethodError: undefined method example_group_finished for NoMethodError:0x3291d9c2

@headius
Copy link
Member

headius commented Nov 20, 2017

StackOverflowError is considered fatal on JRuby, and we do not support recovering from it.

FWIW, it's not safe to recover a StackOverflowError on any implementation, because it can happen at any time, in any code, including potentially VM code that then is unable to maintain a safe VM state. This is basically what's happening here.

9k may have improved this through a better codebase, better stack management, or more careful handling of VM state. In any case, the 1.7 line is no longer supported. If you are able to reproduce this on a recent JRuby 9k version and it does not involve stack overflow, we'll be happy to look into it.

@headius headius closed this as completed Nov 20, 2017
@headius headius added this to the Invalid or Duplicate milestone Nov 20, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants