CRASH! Internal Error in methodHandleWalk.cpp

Charles Oliver Nutter headius at headius.com
Mon May 16 09:16:52 PDT 2011


FYI, some findings from sitting down with Christian:

* It fails at 10000.times { control } but not at 9999.times { ...
which is default server JIT threshold. That tells me it's not
something I'm doing, since it interprets fine.
* It's encountering a void argument in an arg list at methodHandleWalk.cpp:1092
* It works without the "control" call or without the "times" call, but
fails with both together. That also tells me it's not something I'm
doing.
* Christian also found this line of code related to arg spreading that
appears to be explicitly changing an arg to void:

change_argument(T_OBJECT, arg_slot, T_VOID, ArgToken(tt_void));

So perhaps the switch at methodHandleWalk.cpp:1092 hasn't been updated
for whatever logic needed this void transformation?

- Charlie

On Mon, May 16, 2011 at 10:21 AM, Charles Oliver Nutter
<headius at headius.com> wrote:
> A trivial reproduction against my JRuby working copy:
>
> def control
> end
>
> 1000000.times { control }
>
> It seems to have something to do with the block...doing the "control"
> call alone works ok.
>
> - Charlie
>
> On Mon, May 16, 2011 at 10:13 AM, Charles Oliver Nutter
> <headius at headius.com> wrote:
>> FYI, this is now the primary issue keeping me from continuing to wire
>> up invokedynamic paths in JRuby. Have not yet reduced a test case for
>> it.
>>
>> - Charlie
>>
>> On Sat, May 14, 2011 at 11:26 AM, Charles Oliver Nutter
>> <headius at headius.com> wrote:
>>> Current build as of an hour ago. Made some changes to bind more
>>> handles straight through, and got this:
>>>
>>> ~/projects/jruby ➔ jruby -d -X+C --server -e "class Foo; attr_accessor
>>> :bar; end; f = Foo.new; loop do; f.bar; end"
>>> argCount: 4
>>> inbound: (ThreadContext,IRubyObject,IRubyObject,String,IRubyObject[],Block)IRubyObject
>>> permute: [2, 0, 4]
>>> before permute:
>>> attr_accessor(IRubyObject,ThreadContext,IRubyObject[])IRubyObject
>>> #
>>> # A fatal error has been detected by the Java Runtime Environment:
>>> #
>>> #  Internal Error (methodHandleWalk.cpp:1092), pid=24359, tid=2962804736
>>> #  Error: ShouldNotReachHere()
>>> #
>>> # JRE version: 7.0
>>> # Java VM: OpenJDK Server VM (21.0-b09 mixed mode bsd-x86 )
>>> # Failed to write core dump. Core dumps have been disabled. To enable
>>> core dumping, try "ulimit -c unlimited" before starting Java again
>>> #
>>> # An error report file with more information is saved as:
>>> # /Users/headius/projects/jruby/hs_err_pid24359.log
>>> [thread -1332695040 also had an error]
>>> #
>>> # If you would like to submit a bug report, please visit:
>>> #   http://bugreport.sun.com/bugreport/crash.jsp
>>> #
>>> Abort trap
>>>
>>> Apparently I did reach "Here" :)
>>>
>>> I'm going to push my changes so others can try it out, and try to
>>> narrow down where it's happening.
>>>
>>> Log is attached.
>>>
>>> - Charlie
>>>
>>
>


More information about the mlvm-dev mailing list