Mercurial > hg > release > icedtea6-1.9
changeset 2291:63366753f9ba
7002666: Eclipse CDT projects crash with compressed oops
2010-12-01 Andrew John Hughes <ahughes@redhat.com>
* patches/disable-default-compoops.patch: Removed.
* Makefile.am: Replace disable compressed oops workaround
with proper fix for 7002666.
* patches/openjdk/7002666-eclipse_cdt_oops_crash.patch:
Backport of 7002666: Eclipse CDT projects crash with
compressed oops
* NEWS: Updated.
author | Andrew John Hughes <ahughes@redhat.com> |
---|---|
date | Wed, 01 Dec 2010 18:41:42 +0000 |
parents | fb7722abad72 |
children | 16d45ce7afaf |
files | ChangeLog Makefile.am NEWS patches/disable-default-compoops.patch patches/openjdk/7002666-eclipse_cdt_oops_crash.patch |
diffstat | 5 files changed, 94 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog Mon Nov 29 15:56:43 2010 +0100 +++ b/ChangeLog Wed Dec 01 18:41:42 2010 +0000 @@ -1,10 +1,20 @@ -2010-11-29 Matthias Klose <doko@ubuntu.com> +2010-12-01 Andrew John Hughes <ahughes@redhat.com> * patches/hotspot/hs19/ia64-fix.patch: Reapply chunk from patches/zero/6896043.patch. 2010-11-29 Matthias Klose <doko@ubuntu.com> + * patches/disable-default-compoops.patch: Removed. + * Makefile.am: Replace disable compressed oops workaround + with proper fix for 7002666. + * patches/openjdk/7002666-eclipse_cdt_oops_crash.patch: + Backport of 7002666: Eclipse CDT projects crash with + compressed oops + * NEWS: Updated. + +2010-11-29 Matthias Klose <doko@ubuntu.com> + * patches/hotspot/hs19/params-cast-size_t.patch: Update for hs19. 2010-11-24 Andrew John Hughes <ahughes@redhat.com>
--- a/Makefile.am Mon Nov 29 15:56:43 2010 +0100 +++ b/Makefile.am Wed Dec 01 18:41:42 2010 +0000 @@ -321,7 +321,7 @@ if WITH_ALT_HSBUILD ICEDTEA_PATCHES += \ patches/openjdk/6994130-ppc_fix.patch \ - patches/disable-default-compoops.patch \ + patches/openjdk/7002666-eclipse_cdt_oops_crash.patch \ patches/hotspot/hs19/ia64-fix.patch else ICEDTEA_PATCHES += \
--- a/NEWS Mon Nov 29 15:56:43 2010 +0100 +++ b/NEWS Wed Dec 01 18:41:42 2010 +0000 @@ -10,6 +10,9 @@ New in release 1.9.3 (201X-XX-XX): +* Backports + - S7002666: Eclipse CDT projects crash with compressed oops + New in release 1.9.2 (2010-11-24): * Upgrade to latest revision of hs19 (b09).
--- a/patches/disable-default-compoops.patch Mon Nov 29 15:56:43 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ ---- openjdk.orig/hotspot/src/share/vm/runtime/arguments.cpp 2010-11-08 23:50:59.000000000 -0500 -+++ openjdk/hotspot/src/share/vm/runtime/arguments.cpp 2010-11-08 23:52:53.000000000 -0500 -@@ -1301,7 +1301,8 @@ void Arguments::set_ergonomics_flags() { - if (MaxHeapSize <= max_heap_for_compressed_oops()) { - #ifndef COMPILER1 - if (FLAG_IS_DEFAULT(UseCompressedOops) && !UseG1GC) { -- FLAG_SET_ERGO(bool, UseCompressedOops, true); -+ // Temporarily fix rhbz#647737 -- disable compressed oops by default -+ //FLAG_SET_ERGO(bool, UseCompressedOops, true); - } - #endif - #ifdef _WIN64
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/openjdk/7002666-eclipse_cdt_oops_crash.patch Wed Dec 01 18:41:42 2010 +0000 @@ -0,0 +1,79 @@ +--- openjdk.orig/hotspot/src/share/vm/opto/memnode.cpp Tue Nov 30 11:47:17 2010 ++++ openjdk/hotspot/src/share/vm/opto/memnode.cpp Tue Nov 30 11:47:17 2010 +@@ -3599,10 +3599,12 @@ + intptr_t size_limit = phase->find_intptr_t_con(size_in_bytes, max_jint); + if (zeroes_done + BytesPerLong >= size_limit) { + assert(allocation() != NULL, ""); +- Node* klass_node = allocation()->in(AllocateNode::KlassNode); +- ciKlass* k = phase->type(klass_node)->is_klassptr()->klass(); +- if (zeroes_done == k->layout_helper()) +- zeroes_done = size_limit; ++ if (allocation()->Opcode() == Op_Allocate) { ++ Node* klass_node = allocation()->in(AllocateNode::KlassNode); ++ ciKlass* k = phase->type(klass_node)->is_klassptr()->klass(); ++ if (zeroes_done == k->layout_helper()) ++ zeroes_done = size_limit; ++ } + } + if (zeroes_done < size_limit) { + rawmem = ClearArrayNode::clear_memory(rawctl, rawmem, rawptr, +--- /dev/null Tue Nov 30 11:47:18 2010 ++++ openjdk/hotspot/test/compiler/7002666/Test7002666.java Tue Nov 30 11:47:17 2010 +@@ -0,0 +1,57 @@ ++/* ++ * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 only, as ++ * published by the Free Software Foundation. ++ * ++ * This code is distributed in the hope that it will be useful, but WITHOUT ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++ * version 2 for more details (a copy is included in the LICENSE file that ++ * accompanied this code). ++ * ++ * You should have received a copy of the GNU General Public License version ++ * 2 along with this work; if not, write to the Free Software Foundation, ++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. ++ * ++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA ++ * or visit www.oracle.com if you need additional information or have any ++ * questions. ++ * ++ */ ++ ++/** ++ * @test ++ * @bug 7002666 ++ * @summary eclipse CDT projects crash with compressed oops ++ * ++ * @run main/othervm -Xbatch -XX:CompileOnly=Test7002666.test,java/lang/reflect/Array Test7002666 ++ * ++ * This will only reliably fail with a fastdebug build since it relies ++ * on seeing garbage in the heap to die. It could be made more ++ * reliable in product mode but that would require greatly increasing ++ * the runtime. ++ */ ++ ++public class Test7002666 { ++ public static void main(String[] args) { ++ for (int i = 0; i < 25000; i++) { ++ Object[] a = test(Test7002666.class, new Test7002666()); ++ if (a[0] != null) { ++ // The element should be null but if it's not then ++ // we've hit the bug. This will most likely crash but ++ // at least throw an exception. ++ System.err.println(a[0]); ++ throw new InternalError(a[0].toString()); ++ ++ } ++ } ++ } ++ public static Object[] test(Class c, Object o) { ++ // allocate an array small enough to be trigger the bug ++ Object[] a = (Object[])java.lang.reflect.Array.newInstance(c, 1); ++ return a; ++ } ++}