United StatesChange Country, Oracle Worldwide Web Sites Communities I am a... I want to...
Bug ID: JDK-6902701 G1: protect debugging code related to 6898948 with a debug flag
JDK-6902701 : G1: protect debugging code related to 6898948 with a debug flag

Details
Type:
Bug
Submit Date:
2009-11-18
Status:
Resolved
Updated Date:
2010-04-02
Project Name:
JDK
Resolved Date:
2010-01-14
Component:
hotspot
OS:
generic
Sub-Component:
gc
CPU:
generic
Priority:
P4
Resolution:
Fixed
Affected Versions:
hs17
Fixed Versions:
hs17 (b06)

Related Reports
Backport:
Backport:
Relates:
Relates:
Relates:

Sub Tasks

Description
Having collected the debugging data related to 6898948 from two nights of
testing, we want to turn off the assert following the data
dumping by protecting with a debug flag defaulting to false.
This will allow the debug JVM to, by default, correct the
problem and continue operation, just as in product mode,
rather than failing upon encountering the problem.

                                    

Comments
SUGGESTED FIX

diff -r 89f1b9ae8991 src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp
--- a/src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp   Fri Nov 13 11:55:26 2009 -0800
+++ b/src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp   Wed Nov 18 14:33:47 2009 -0800
@@ -1528,18 +1528,17 @@ void G1CollectorPolicy::record_collectio
       _recent_prev_end_times_for_all_gcs_sec->dump();
       gclog_or_tty->print_cr("GC = %3.3f, Interval = %3.3f, Ratio = %3.3f",
                              _recent_gc_times_ms->sum(), interval_ms, recent_avg_pause_time_ratio());
-      // TEMPORARY: In debug mode, terminate the JVM, so nightly testing explicitly
-      // flags the sighting by failing the test.
-      assert(false, "Debugging data for CR 6898948 has been dumped above");
-#else  // PRODUCT
-      // Clip ratio between 0.0 and 1.0
+      // In debug mode, terminate the JVM if the user wants to debug at this point.
+      assert(!G1FailOnFPError, "Debugging data for CR 6898948 has been dumped above");
+#endif  // !PRODUCT
+      // Clip ratio between 0.0 and 1.0, and continue. This will be fixed in
+      // CR 6902692 by redoing the manner in which the ratio is incrementally computed.
       if (_recent_avg_pause_time_ratio < 0.0) {
         _recent_avg_pause_time_ratio = 0.0;
       } else {
         assert(_recent_avg_pause_time_ratio - 1.0 > 0.0, "Ctl-point invariant");
         _recent_avg_pause_time_ratio = 1.0;
       }
-#endif  // PRODUCT
     }
   }
 
diff -r 89f1b9ae8991 src/share/vm/gc_implementation/g1/g1_globals.hpp
--- a/src/share/vm/gc_implementation/g1/g1_globals.hpp  Fri Nov 13 11:55:26 2009 -0800
+++ b/src/share/vm/gc_implementation/g1/g1_globals.hpp  Wed Nov 18 14:33:47 2009 -0800
@@ -242,6 +242,10 @@
   product(bool, G1UseSurvivorSpaces, true,                                  \
           "When true, use survivor space.")                                 \
                                                                             \
+  develop(bool, G1FailOnFPError, false,                                     \
+          "When set, G1 will fail when it encounters an FP 'error', "       \
+          "so as to allow debugging")                                       \
+                                                                            \
   develop(bool, G1FixedTenuringThreshold, false,                            \
           "When set, G1 will not adjust the tenuring threshold")            \
                                                                             \
                                     
2009-11-18
EVALUATION

Yes.
                                     
2009-11-18
EVALUATION

http://hg.openjdk.java.net/jdk7/hotspot-gc/hotspot/rev/23b9a8d315fc
                                     
2009-11-19



Hardware and Software, Engineered to Work Together