EVALUATION
http://hg.openjdk.java.net/jdk7/build/hotspot/rev/87d6a4d1ecbc
|
|
|
EVALUATION
http://hg.openjdk.java.net/jdk7/hotspot-comp/hotspot/rev/87d6a4d1ecbc
|
|
|
PUBLIC COMMENTS
There is a problem in the logic of SystemDictionary::find_method_handle_invoke when the classes of the signature are not on the bootclasspath. In that case the method returns always the newly created method resulting in the assert above.
Putting the classes on the bootclasspath makes the testcase work up to a point where it hits another assert:
# To suppress the following error report, specify this argument
# after -XX: or in .hotspotrc: SuppressErrorAt=/sharedRuntime.cpp:2693
==============================================================================
Unexpected Error
------------------------------------------------------------------------------
Internal Error at sharedRuntime.cpp:2693, pid=23705, tid=68
assert(fr.interpreter_frame_expression_stack_size()==0) failed: only handle empty stacks
Do you want to debug the problem?
To debug, run 'dbx - 23705'; then switch to thread 68
Enter 'yes' to launch dbx automatically (PATH must include dbx)
Otherwise, press RETURN to abort...
==============================================================================
(dbx) where
current thread: t@68
[1] _waitid(0x0, 0x5d28, 0xb49dd6c0, 0x3), at 0xfdb7af95
[2] _waitpid(0x5d28, 0xb49dd788, 0x0), at 0xfdb293bf
[3] waitpid(0x5d28, 0xb49dd788, 0x0), at 0xfdb6c805
=>[4] os::fork_and_exec(cmd = 0xfede9e30 "dbx - 23705"), line 5978 in "os_solaris.cpp"
[5] VMError::show_message_box(this = 0xb49dd908, buf = 0xfede9e30 "dbx - 23705", buflen = 2000), line 53 in "vmError_solaris.cpp"
[6] VMError::report_and_die(this = 0xb49dd908), line 725 in "vmError.cpp"
[7] report_vm_error(file = 0xfebda87a "/home/ct232829/hotspot-comp/6990192/src/share/vm/runtime/sharedRuntime.cpp", line = 2693, error_msg = 0xfebda8c5 "assert(fr.interpreter_frame_expression_stack_size()==0) failed", detail_msg = 0xfebda904 "only handle empty stacks"), line 176 in "debug.cpp"
[8] SharedRuntime::OSR_migration_begin(thread = 0x82e4c00), line 2693 in "sharedRuntime.cpp"
[9] 0xfa814aa3(0xd52, 0xe60c4088, 0xe60c4088, 0xb49dda54, 0xb67fbf2e, 0xb49dda84), at 0xfa814aa3
[10] 0xfa803173(0x0, 0x0, 0xe60dc0a0, 0xb49dda88, 0xb663ad1b, 0xb49ddab0), at 0xfa803173
[11] 0xfa803ab7(0xe60dc000, 0xfecf2aa0, 0x1f80, 0xfecf2aa0, 0xb49ddc88, 0xb663ad38), at 0xfa803ab7
[12] 0xfa80043e(0xb49ddb34, 0xb49ddd10, 0xa, 0xb663ad38, 0xfa80b980, 0xb49ddc88, 0x1, 0x82e4c00, 0x0, 0x0), at 0xfa80043e
[13] JavaCalls::call_helper(result = 0xb49ddd0c, m = 0xb49ddc00, args = 0xb49ddc80, __the_thread__ = 0x82e4c00), line 379 in "javaCalls.cpp"
[14] os::os_exception_wrapper(f = 0xfe30c6b0 = &JavaCalls::call_helper(JavaValue*,methodHandle*,JavaCallArguments*,Thread*), value = 0xb49ddd0c, method = 0xb49ddc00, args = 0xb49ddc80, thread = 0x82e4c00), line 4083 in "os_solaris.cpp"
[15] JavaCalls::call(result = 0xb49ddd0c, method = CLASS, args = 0xb49ddc80, __the_thread__ = 0x82e4c00), line 293 in "javaCalls.cpp"
[16] JavaCalls::call_virtual(result = 0xb49ddd0c, spec_klass = CLASS, name = CLASS, signature = CLASS, args = 0xb49ddc80, __the_thread__ = 0x82e4c00), line 190 in "javaCalls.cpp"
[17] JavaCalls::call_virtual(result = 0xb49ddd0c, receiver = CLASS, spec_klass = CLASS, name = CLASS, signature = CLASS, __the_thread__ = 0x82e4c00), line 196 in "javaCalls.cpp"
[18] thread_entry(thread = 0x82e4c00, __the_thread__ = 0x82e4c00), line 2580 in "jvm.cpp"
[19] JavaThread::thread_main_inner(this = 0x82e4c00), line 1429 in "thread.cpp"
[20] JavaThread::run(this = 0x82e4c00), line 1413 in "thread.cpp"
[21] java_start(thread_addr = 0x82e4c00), line 1010 in "os_solaris.cpp"
[22] _thr_setup(0xb5461200), at 0xfdb771d0
[23] _lwp_start(0x0, 0x5d28, 0xb49dd6c0, 0x3, 0xb5461200, 0xfdbee000), at 0xfdb774c0
|
|
|
PUBLIC COMMENTS
Running this testcase with a debug build results in:
(dbx) where
current thread: t@24
[1] ___nanosleep(0xb57f76b8, 0xb57f76c0), at 0xfdb798b5
[2] _sleep(0x64, 0x0), at 0xfdb6b5d2
=>[3] os::infinite_sleep(), line 3471 in "os_solaris.cpp"
[4] VMError::report_and_die(this = 0xb57f77f4), line 751 in "vmError.cpp"
[5] report_vm_error(file = 0xfe97dcd8 "/home/ct232829/hotspot-comp/hotspot/src/share/vm/oops/cpCacheOop.hpp", line = 130, error_msg = 0xfe97dd1d "assert(existing_f1 == NULL || existing_f1 == f1) failed", detail_msg = 0xfe97dd55 "illegal field change"), line 176 in "debug.cpp"
[6] ConstantPoolCacheEntry::set_f1(this = 0xb68153ec, f1 = 0xb684e0d8), line 130 in "cpCacheOop.hpp"
[7] ConstantPoolCacheEntry::set_method(this = 0xb68153ec, invoke_code = _invokedynamic, method = CLASS, vtable_index = -2), line 168 in "cpCacheOop.cpp"
[8] InterpreterRuntime::resolve_invokedynamic(thread = 0x829f400), line 730 in "interpreterRuntime.cpp"
[9] 0xfa81778d(0x0, 0xe5107890, 0xe5107890, 0xb57f79d4, 0xb684d5ee, 0xb57f7a04), at 0xfa81778d
[10] 0xfa803173(0x0, 0x0, 0xe510a390, 0xb57f7a08, 0xb663ad1b, 0xb57f7a30), at 0xfa803173
[11] 0xfa803ab7(0xe510a328, 0xfecf3ef0, 0x1f80, 0xfecf3ef0, 0xb57f7c08, 0xb663ad38), at 0xfa803ab7
[12] 0xfa80043e(0xb57f7ab4, 0xb57f7c90, 0xa, 0xb663ad38, 0xfa80b980, 0xb57f7c08, 0x1, 0x829f400, 0x0, 0x0), at 0xfa80043e
[13] JavaCalls::call_helper(result = 0xb57f7c8c, m = 0xb57f7b80, args = 0xb57f7c00, __the_thread__ = 0x829f400), line 379 in "javaCalls.cpp"
[14] os::os_exception_wrapper(f = 0xfe30c560 = &JavaCalls::call_helper(JavaValue*,methodHandle*,JavaCallArguments*,Thread*), value = 0xb57f7c8c, method = 0xb57f7b80, args = 0xb57f7c00, thread = 0x829f400), line 4083 in "os_solaris.cpp"
[15] JavaCalls::call(result = 0xb57f7c8c, method = CLASS, args = 0xb57f7c00, __the_thread__ = 0x829f400), line 293 in "javaCalls.cpp"
[16] JavaCalls::call_virtual(result = 0xb57f7c8c, spec_klass = CLASS, name = CLASS, signature = CLASS, args = 0xb57f7c00, __the_thread__ = 0x829f400), line 190 in "javaCalls.cpp"
[17] JavaCalls::call_virtual(result = 0xb57f7c8c, receiver = CLASS, spec_klass = CLASS, name = CLASS, signature = CLASS, __the_thread__ = 0x829f400), line 196 in "javaCalls.cpp"
[18] thread_entry(thread = 0x829f400, __the_thread__ = 0x829f400), line 2580 in "jvm.cpp"
[19] JavaThread::thread_main_inner(this = 0x829f400), line 1429 in "thread.cpp"
[20] JavaThread::run(this = 0x829f400), line 1413 in "thread.cpp"
[21] java_start(thread_addr = 0x829f400), line 1010 in "os_solaris.cpp"
[22] _thr_setup(0xfa63b200), at 0xfdb771d0
[23] _lwp_start(0xb57f76b8, 0xb57f76c0, 0xfedeb260, 0xfecf3ef0, 0x64, 0x0), at 0xfdb774c0
It seems we have a race here we have to take care about.
|
|
|
|