Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-2177224 | 7 | Tom Rodriguez | P3 | Closed | Fixed | b35 |
JDK-2170218 | 6u12 | Erik Trimble | P3 | Resolved | Fixed | b01 |
JDK-2166379 | OpenJDK6 | Joe Darcy | P3 | Resolved | Fixed | b12 |
JDK-2166380 | hs11 | Tom Rodriguez | P3 | Resolved | Fixed | b17 |
Hi hotspot maintainers,
For a while now, there's been a crash in hotspot compiled with gcc 4.2
in ciTypeFlow.cpp (crashes in Swingset demo)
There have been a number of approaches to fixing it.
It appears that Matthias Klose has patched icedtea6 as follows:
--- openjdk/hotspot/src/share/vm/ci/ciTypeFlow.hpp~ 2008-07-10
22:04:30.000000000 +0200
+++ openjdk/hotspot/src/share/vm/ci/ciTypeFlow.hpp 2008-07-25
14:32:03.544802121 +0200
@@ -130,7 +130,7 @@
// Used as a combined index for locals and temps
enum Cell {
- Cell_0
+ Cell_0, Cell_max = UINT_MAX
};
// A StateVector summarizes the type information at some
Unfortunately, this fails to compile (at least with gcc 4.0
and OpenJDK7)
cc1plus: warnings being treated as errors
/usr/local/google/home/martin/ws/hotspot/hotspot/src/share/vm/ci/ciTypeFlow.cpp:
In member function 'const ciTypeFlow::StateVector*
ciTypeFlow::get_start_state()':
/usr/local/google/home/martin/ws/hotspot/hotspot/src/share/vm/ci/ciTypeFlow.cpp:392:
warning: comparison between signed and unsigned integer expressions
make[6]: *** [ciTypeFlow.o] Error 1
Here's another try,
and this time let's try to get it into both OpenJDK7 and OpenJDK6.
I'll do the push into OpenJDK7.
# HG changeset patch
# User martin
# Date 1219532277 25200
# Node ID 52c7e88431fc50fd682a0506cd9588c476ca7a00
# Parent f8068895c22d848b6f0e6998886652c3d2f51b24
6666666: Crash in ciTypeFlow with gcc 4.2, enum Cell range too small
Reviewed-by:
Contributed-by: ###@###.###
diff --git a/src/share/vm/ci/ciTypeFlow.hpp b/src/share/vm/ci/ciTypeFlow.hpp
--- a/src/share/vm/ci/ciTypeFlow.hpp
+++ b/src/share/vm/ci/ciTypeFlow.hpp
@@ -127,7 +127,7 @@
// Used as a combined index for locals and temps
enum Cell {
- Cell_0
+ Cell_0, Cell_max = INT_MAX
};
// A StateVector summarizes the type information at some
There doesn't seem to be a bug for this in bugtraq.
Sun folk, please file a bug,
and let me know which team hg forest to push this into.
For those of us using newer gccs, this is a P1 bug.
As justification, note that the existing code is illegal C++
Enum variables must take on values in the range of the enum constants,
which was not the case with the old code.
@doko: please review. My version of this change maintains the
signedness of enum Cell, avoiding possible changes in behavior
and subtleties with signed/unsigned comparison.
Let's all try harder to get "community"-developed patches upstream.
Thanks,
Martin
For a while now, there's been a crash in hotspot compiled with gcc 4.2
in ciTypeFlow.cpp (crashes in Swingset demo)
There have been a number of approaches to fixing it.
It appears that Matthias Klose has patched icedtea6 as follows:
--- openjdk/hotspot/src/share/vm/ci/ciTypeFlow.hpp~ 2008-07-10
22:04:30.000000000 +0200
+++ openjdk/hotspot/src/share/vm/ci/ciTypeFlow.hpp 2008-07-25
14:32:03.544802121 +0200
@@ -130,7 +130,7 @@
// Used as a combined index for locals and temps
enum Cell {
- Cell_0
+ Cell_0, Cell_max = UINT_MAX
};
// A StateVector summarizes the type information at some
Unfortunately, this fails to compile (at least with gcc 4.0
and OpenJDK7)
cc1plus: warnings being treated as errors
/usr/local/google/home/martin/ws/hotspot/hotspot/src/share/vm/ci/ciTypeFlow.cpp:
In member function 'const ciTypeFlow::StateVector*
ciTypeFlow::get_start_state()':
/usr/local/google/home/martin/ws/hotspot/hotspot/src/share/vm/ci/ciTypeFlow.cpp:392:
warning: comparison between signed and unsigned integer expressions
make[6]: *** [ciTypeFlow.o] Error 1
Here's another try,
and this time let's try to get it into both OpenJDK7 and OpenJDK6.
I'll do the push into OpenJDK7.
# HG changeset patch
# User martin
# Date 1219532277 25200
# Node ID 52c7e88431fc50fd682a0506cd9588c476ca7a00
# Parent f8068895c22d848b6f0e6998886652c3d2f51b24
6666666: Crash in ciTypeFlow with gcc 4.2, enum Cell range too small
Reviewed-by:
Contributed-by: ###@###.###
diff --git a/src/share/vm/ci/ciTypeFlow.hpp b/src/share/vm/ci/ciTypeFlow.hpp
--- a/src/share/vm/ci/ciTypeFlow.hpp
+++ b/src/share/vm/ci/ciTypeFlow.hpp
@@ -127,7 +127,7 @@
// Used as a combined index for locals and temps
enum Cell {
- Cell_0
+ Cell_0, Cell_max = INT_MAX
};
// A StateVector summarizes the type information at some
There doesn't seem to be a bug for this in bugtraq.
Sun folk, please file a bug,
and let me know which team hg forest to push this into.
For those of us using newer gccs, this is a P1 bug.
As justification, note that the existing code is illegal C++
Enum variables must take on values in the range of the enum constants,
which was not the case with the old code.
@doko: please review. My version of this change maintains the
signedness of enum Cell, avoiding possible changes in behavior
and subtleties with signed/unsigned comparison.
Let's all try harder to get "community"-developed patches upstream.
Thanks,
Martin
- backported by
-
JDK-2166379 bad enum definition in ciTypeFlow.hpp
- Resolved
-
JDK-2166380 bad enum definition in ciTypeFlow.hpp
- Resolved
-
JDK-2170218 bad enum definition in ciTypeFlow.hpp
- Resolved
-
JDK-2177224 bad enum definition in ciTypeFlow.hpp
- Closed