Beispiel #1
0
void report_fatal_error(Error Err, bool GenCrashDiag) {
  assert(Err && "report_fatal_error called with success value");
  std::string ErrMsg;
  {
    raw_string_ostream ErrStream(ErrMsg);
    logAllUnhandledErrors(std::move(Err), ErrStream);
  }
  report_fatal_error(ErrMsg);
}
Beispiel #2
0
 void MemPoolDebug::DtorErrorMesg(void) const
 {
   ErrStream() << "[ERR] MemPoolDebug(\"" << myName << "\") ERROR:  dtor"
               << ", unfreed slices: NumSlices=" << myInUseCount << endl;
 }
Beispiel #3
0
 void MemPoolDebug::FreeErrorMesg(void* ptr, const string& reason) const
 {
   ErrStream() << "[ERR] MemPoolDebug(\"" << myName << "\") ERROR:  free, seq=" << setw(4) << myFreeCount
               << ", addr=" << ptr  << ": " << reason << endl;
 }
Beispiel #4
0
 void MemPoolDebug::PrintSlice(void* ptr) const
 {
   slice_t p = static_cast<slice_t>(ptr) - myMarginWords;
   size_t i=0;
   ErrStream() << "[ERR] Nature        addr  :    value      (decimal)" << endl;
   ErrStream() << "[ERR] =============================================" << endl;
   for (; i < myMarginWords; ++i)
   {
     ErrStream() << "[ERR] margin  " << setw(12) << static_cast<void*>(&p[i]) << ":"
                 << setw(12) << static_cast<void*>(p[i])
                 << setw(12) << reinterpret_cast<unsigned long>(p[i]);
     if (p[i] != MEMPOOL_ALLOCATED_WORD_BEFORE)
       ErrStream() << " <--- WRONG!  Should have been "
                   << static_cast<void*>(MEMPOOL_ALLOCATED_WORD_BEFORE);
     ErrStream() << endl;
   }
   ErrStream() << "[ERR] ---------------------------------------------" << endl;
   for (; i < mySliceWords - myMarginWords; ++i)
   {
     ErrStream() << "[ERR] data    " << setw(12) << static_cast<void*>(&p[i]) << ":"
                 << setw(12) << static_cast<void*>(p[i])
                 << setw(12) << reinterpret_cast<unsigned long>(p[i]) << endl;
   }
   ErrStream() << "[ERR] ---------------------------------------------" << endl;
   for (i = mySliceWords - myMarginWords; i < mySliceWords; ++i)
   {
     ErrStream() << "[ERR] margin  " << setw(12) << static_cast<void*>(&p[i]) << ":"
                 << setw(12) << static_cast<void*>(p[i])
                 << setw(12) << reinterpret_cast<unsigned long>(p[i]);
     if (p[i] != MEMPOOL_ALLOCATED_WORD_AFTER)
       ErrStream() << " <--- WRONG!  Should have been "
                   << static_cast<void*>(MEMPOOL_ALLOCATED_WORD_AFTER);
     ErrStream() << endl;
   }
   ErrStream() << "[ERR] =============================================" << endl;
   ErrStream() << endl;
 }
Beispiel #5
0
 void MemPoolDebug::OverwriteErrorMesg(slice_t slice_addr, void* overwritten_addr) const
 {
   ErrStream() << "[ERR] MemPoolDebug(\"" << myName
               << "\") ERROR: OVERWRITTEN freed slice, slice_addr=" << slice_addr
               << ", overwritten at addr=" << overwritten_addr << endl;
 }