Print this page
rev 6902 : 8062036: ConcurrentMarkThread::slt may be invoked before ConcurrentMarkThread::makeSurrogateLockerThread causing intermittent crashes
Summary: Suppress gc_alot during VM init, improve error for SLT uninitialized.
Reviewed-by: jmasa, brutisso, tschatzl

Split Split Close
Expand all
Collapse all
          --- old/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/vmCMSOperations.cpp
          +++ new/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/vmCMSOperations.cpp
↓ open down ↓ 42 lines elided ↑ open up ↑
  43   43  HS_DTRACE_PROBE_DECL(hs_private, cms__remark__begin);
  44   44  HS_DTRACE_PROBE_DECL(hs_private, cms__remark__end);
  45   45  #endif /* !USDT2 */
  46   46  
  47   47  //////////////////////////////////////////////////////////
  48   48  // Methods in abstract class VM_CMS_Operation
  49   49  //////////////////////////////////////////////////////////
  50   50  void VM_CMS_Operation::acquire_pending_list_lock() {
  51   51    // The caller may block while communicating
  52   52    // with the SLT thread in order to acquire/release the PLL.
  53      -  ConcurrentMarkSweepThread::slt()->
  54      -    manipulatePLL(SurrogateLockerThread::acquirePLL);
       53 +  SurrogateLockerThread* slt = ConcurrentMarkSweepThread::slt();
       54 +  if (slt != NULL) {
       55 +    slt->manipulatePLL(SurrogateLockerThread::acquirePLL);
       56 +  } else {
       57 +    SurrogateLockerThread::report_missing_slt();
       58 +  }
  55   59  }
  56   60  
  57   61  void VM_CMS_Operation::release_and_notify_pending_list_lock() {
  58   62    // The caller may block while communicating
  59   63    // with the SLT thread in order to acquire/release the PLL.
  60   64    ConcurrentMarkSweepThread::slt()->
  61   65      manipulatePLL(SurrogateLockerThread::releaseAndNotifyPLL);
  62   66  }
  63   67  
  64   68  void VM_CMS_Operation::verify_before_gc() {
↓ open down ↓ 247 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX