United StatesChange Country, Oracle Worldwide Web Sites Communities I am a... I want to...
Bug ID: 6988678 fatal error deadlock handling was unintentionally disabled
6988678 : fatal error deadlock handling was unintentionally disabled

Details
Type:
Bug
Submit Date:
2010-09-30
Status:
Closed
Updated Date:
2011-04-23
Project Name:
JDK
Resolved Date:
2011-04-23
Component:
hotspot
OS:
generic
Sub-Component:
gc
CPU:
generic
Priority:
P3
Resolution:
Fixed
Affected Versions:
hs20
Fixed Versions:
hs20

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

Sub Tasks

Description
A deadlock in the fatal error handler is normally detected by the WatcherThread, which will terminate the process after waiting for some time.  This feature was unintentionally disabled.

                                    

Comments
EVALUATION

http://hg.openjdk.java.net/jdk7/hotspot/hotspot/rev/8f6f7587d292
                                     
2010-10-09
EVALUATION

http://hg.openjdk.java.net/hsx/hsx19/baseline/rev/53adfc40121e
                                     
2010-10-08
EVALUATION

http://hg.openjdk.java.net/jdk7/hotspot-gc/hotspot/rev/8f6f7587d292
                                     
2010-10-01
EVALUATION

The fix for "6423256 GC stacks should use a better data structure" included some debugging code that was not intended to be included in the product--a simple "#if 0 ... #endif" around the fatal error deadlock handling code in WatcherThread::run().  That change should be reverted.
                                     
2010-09-30
SUGGESTED FIX

diff --git a/src/share/vm/runtime/thread.cpp b/src/share/vm/runtime/thread.cpp
--- a/src/share/vm/runtime/thread.cpp
+++ b/src/share/vm/runtime/thread.cpp
@@ -1073,7 +1073,6 @@
       }
     }
 
-#if 0
     if (is_error_reported()) {
       // A fatal error has happened, the error handler(VMError::report_and_die)
       // should abort JVM after creating an error log file. However in some
@@ -1101,7 +1100,6 @@
         os::sleep(this, 5 * 1000, false);
       }
     }
-#endif // #if 0
 
     PeriodicTask::real_time_tick(time_to_wait);
                                     
2010-09-30



Hardware and Software, Engineered to Work Together