Hi again,

OK, so I managed to reproduce ""bug"" (?) I got:
Here is the stack with JIT enabled: http://pastie.caboo.se/172228
and here is the one with -X-C (no JIT, right?): http://pastie.caboo.se/172227

Again: the error seems to occur after requesting a few time the same
Rails page but doing something that's probably wrong, that's
manipulating ActiveRecord and possibly other small Rails parts in a
background thread while handling new requests on the same JRuby
runtime.

In doubt I think that could help you so I posted the stack. Let me
know if you think that's the same issue and if I might do something
more. BTW unfortunately my usecase isn't simple so I can't really
expose it there.

Good luck.

Raphaël Valyi.





On Fri, Mar 28, 2008 at 10:37 PM, Raphaël Valyi <[EMAIL PROTECTED]> wrote:
> Hi Ola,
>
>  I think I just saw that kind of
>  java.lang.ArrayIndexOutOfBoundsException in compiled code too. That
>  was using Rails. It was inconsistent: happening some times but not
>  always for the same request (but once it happen my Rails server would
>  never handle any new request). I'll attach my stacktrace if I can get
>  it back.
>  Still, I tried to roll back the SVN as far as rev #6293 and the bug
>  was still there for me. Then I released I was actually doing some
>  ActiveRecord manipulation in a background thread while possibly
>  getting new requests on the same JRuby runtime. So I disabled that
>  background stuff and made it happen in the same thread instead. Then I
>  didn't see the bug anymore. I didn't even dare call it a bug as
>  ActiveRecord isn't supposed to be threadsafe and at least I wasn't
>  really sure it should work.
>
>  OK, not 100% it's the same bug but really looks the same. I'll try to
>  get it back.
>
>  Good luck,
>
>  Raphaël Valyi.
>
>
>
>
>
>  On Fri, Mar 28, 2008 at 4:35 PM, Ola Bini <[EMAIL PROTECTED]> wrote:
>  > Hey
>  >
>  >  I've run into some seriously strange. Now, first of all this problem is
>  >  actually a bad handling of a "stack level to deep" problem, combined
>  >  with ActiveSupport.
>  >
>  >  Now, in a specific combination, running Expectations with ActiveSupport,
>  >  just loading them - will actually case MRI to get "stack level to deep".
>  >  Now, we get that too, sometimes. Specifically, when using -X-C we get it
>  >  correctly - when usinx -X+C I get an extremely long stack trace of
>  >  synthetic method invocations instead.
>  >  But sometimes I get this instead:
>  >
>  >  java.lang.ArrayIndexOutOfBoundsException: 4
>  >         at
>  >  
> org.jruby.runtime.scope.ManyVarsDynamicScope.getValueDepthZeroOrNil(ManyVarsDynamicScope.java:93)
>  >         at
>  >  
> org.jruby.runtime.scope.ManyVarsDynamicScope.getValueOrNil(ManyVarsDynamicScope.java:83)
>  >         at
>  >  
> org.jruby.runtime.scope.OneVarDynamicScope.getValueOrNil(OneVarDynamicScope.java:75)
>  >         at
>  >  
> ruby.jit.ruby.Users.olabini.workspace.jtestr_git.src.ruby.activesupport.lib.active_support.dependencies.new_constants_in13155965_9177946.closure_377_10(/Users/olabini/workspace/jtestr_git/src/ruby/activesupport/lib/active_support/dependencies.rb:379)
>  >         at
>  >  
> ruby.jit.ruby.Users.olabini.workspace.jtestr_git.src.ruby.activesupport.lib.active_support.dependencies.new_constants_in13155965_9177946BlockCallback$closure_377_10xx1.call(Unknown
>  >  Source)
>  >
>  >  This is a actually a quite funny error. When I looked at the source line
>  >  specified here (and notice that ActiveSupport dependencies actually wrap
>  >  _all_ require's in a new_constants_in block). The relevant part of
>  >  new_constants_in look like this:
>  >
>  >   ensure
>  >     # Remove the stack frames that we added.
>  >     if defined?(watch_frames) && ! watch_frames.empty?
>  >       frame_ids = watch_frames.collect(&:object_id)
>  >       constant_watch_stack.delete_if do |watch_frame|
>  >         frame_ids.include? watch_frame.object_id
>  >       end
>  >     end
>  >
>  >  Now, I don't know exactly what happens here. One possibility is that
>  >  frame_ids gets created dynamically, but the gets the wrong index for
>  >  some reason, lots of block vars have not been defined, that should have
>  >  been defined. What do you think? Of course, it's invalid anyway, but it
>  >  would be nice not see an ArrayIndexOutOfBoundsException for it.
>  >
>  >  It's a bit of a pain to replicate reliably, though. I have a script that
>  >  does it by loading some other libraries and Expectations. What's funny
>  >  is that I have a comment in that script - if I remove the comment, this
>  >  problem doesn't happen - then I just get the regular stack level problem.
>  >
>  >  Cheers
>  >  --
>  >   Ola Bini (http://ola-bini.blogspot.com)
>  >   JRuby Core Developer
>  >   Developer, ThoughtWorks Studios (http://studios.thoughtworks.com)
>  >   Practical JRuby on Rails (http://apress.com/book/view/9781590598818)
>  >
>  >   "Yields falsehood when quined" yields falsehood when quined.
>  >
>  >
>  >
>  >  ---------------------------------------------------------------------
>  >  To unsubscribe from this list, please visit:
>  >
>  >     http://xircles.codehaus.org/manage_email
>  >
>  >
>  >
>

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email


Reply via email to