four failing jdk/test/java/lang/invoke tests
Stephen Bannasch
stephen.bannasch at deanbrook.org
Wed Jun 22 18:49:03 PDT 2011
At 1:13 PM -0700 6/22/11, Tom Rodriguez wrote:
>Do you have meth-link-7056328.patch applied? There's a bug in there with a missing null check.
yes ... it's in the patches/hotspot/series file
# non-pushed files are under review or development, or merely experimental:
meth-link-7056328.patch #-/meth #+8166f9740747
>A fastdebug build will assert like this:
>
>(dbx) where
>current thread: t at 7
> [1] __lwp_kill(0x7, 0x6), at 0xfeeb3ac5
> [2] _thr_kill(0x7, 0x6), at 0xfeead5dd
> [3] raise(0x6), at 0xfee68362
> [4] abort(0x6, 0xfeaf1c48, 0xfe4c453c, 0xfe4d0037, 0xfa6918ec, 0xfe140f44), at 0xfee45e3d
>=>[5] os::abort(dump_core = true), line 1869 in "os_solaris.cpp"
> [6] VMError::report_and_die(this = 0xfa691b50), line 991 in "vmError.cpp"
> [7] report_vm_error(file = 0xfe67c90e "/home/ct232829/hsx/hotspot-comp/7056328/src/share/vm/runtime/handles.hpp", line = 81, error_msg = 0xfe67c957 "assert(_handle != NULL) failed", detail_msg = 0xfe67c976 "resolving NULL handle"), line 216 in "debug.cpp"
> [8] Handle::non_null_obj(this = 0xfa691ca0), line 81 in "handles.hpp"
> [9] constantPoolHandle::non_null_obj(this = 0xfa691ca0), line 195 in "handles.hpp"
> [10] constantPoolHandle::operator->(this = 0xfa691ca0), line 195 in "handles.hpp"
> [11] ciEnv::get_klass_by_name_impl(this = 0xfa692a44, accessing_klass = 0x83d6710, cpool = CLASS, name = 0x83d6a10, require_local = false), line 457 in "ciEnv.cpp"
>
>This piece of the patch for ciEnv.cpp should look like this instead:
>
>@@ -451,6 +454,19 @@
> }
> }
>
>+ if (found_klass() == NULL && !cpool.is_null() && cpool->has_preresolution()) {
>+ // Look inside the constant pool for pre-resolved class entries.
>+ for (int i = cpool->length() - 1; i >= 1; i--) {
>+ if (cpool->tag_at(i).is_klass()) {
>+ klassOop kls = cpool->resolved_klass_at(i);
>+ if (Klass::cast(kls)->name() == sym) {
>+ found_klass = KlassHandle(THREAD, kls);
>+ break;
>+ }
>+ }
>+ }
>+ }
>+
> if (found_klass() != NULL) {
> // Found it. Build a CI handle.
> return get_object(found_klass())->as_klass();
>
>Note the !cpool.is_null() part. Hopefully John will update the patch when he gets a chance.
With this applied I'm not getting any failures:
diff --git a/meth-link-7056328.patch b/meth-link-7056328.patch
--- a/meth-link-7056328.patch
+++ b/meth-link-7056328.patch
@@ -43,7 +43,7 @@
}
}
-+ if (found_klass() == NULL && cpool->has_preresolution()) {
++ if (found_klass() == NULL && !cpool.is_null() && cpool->has_preresolution()) {
+ // Look inside the constant pool for pre-resolved class entries.
+ for (int i = cpool->length() - 1; i >= 1; i--) {
+ if (cpool->tag_at(i).is_klass()) {
I see it's applied in John's latest commits
More information about the mlvm-dev
mailing list