CMS 3D CMS Logo

List of all members | Classes | Public Member Functions | Static Public Member Functions | Static Public Attributes | Private Member Functions | Static Private Member Functions | Private Attributes | Static Private Attributes | Friends
edm::service::InitRootHandlers Class Reference
Inheritance diagram for edm::service::InitRootHandlers:
edm::RootHandlers

Classes

class  ThreadTracker
 

Public Member Functions

 InitRootHandlers (ParameterSet const &pset, ActivityRegistry &iReg)
 
 ~InitRootHandlers () override
 
- Public Member Functions inherited from edm::RootHandlers
template<typename F >
void ignoreWarningsWhileDoing (F iFunc, SeverityLevel level=SeverityLevel::kWarning)
 
virtual ~RootHandlers ()
 

Static Public Member Functions

static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void stacktraceFromThread ()
 
static int stackTracePause ()
 
static const ThreadTracker::Container_typethreadIDs ()
 

Static Public Attributes

static std::atomic< std::size_t > doneModules_
 
static std::vector< std::array< char, moduleBufferSize > > moduleListBuffers_
 
static std::atomic< std::size_t > nextModule_
 

Private Member Functions

void cachePidInfo ()
 
void enableWarnings_ () override
 
void ignoreWarnings_ (edm::RootHandlers::SeverityLevel level) override
 
void willBeUsingThreads () override
 

Static Private Member Functions

static char *const * getPstackArgv ()
 
static void stacktraceHelperThread ()
 

Private Attributes

bool autoLibraryLoader_
 
bool loadAllDictionaries_
 
bool resetErrHandler_
 
std::shared_ptr< const void > sigAbrtHandler_
 
std::shared_ptr< const void > sigBusHandler_
 
std::shared_ptr< const void > sigIllHandler_
 
std::shared_ptr< const void > sigSegvHandler_
 
std::shared_ptr< const void > sigTermHandler_
 
bool unloadSigHandler_
 

Static Private Attributes

static int childToParent_ [2] = {-1, -1}
 
static std::unique_ptr< std::thread > helperThread_
 
static int parentToChild_ [2] = {-1, -1}
 
static char pidString_ [pidStringLength_] = {}
 
static const int pidStringLength_ = 200
 
static char *const pstackArgv_ [] = {pstackName, dashC, InitRootHandlers::pidString_, nullptr}
 
static int stackTracePause_ = 300
 
static ThreadTracker threadTracker_
 

Friends

int cmssw_stacktrace (void *)
 

Additional Inherited Members

- Public Types inherited from edm::RootHandlers
enum  SeverityLevel {
  SeverityLevel::kInfo, SeverityLevel::kWarning, SeverityLevel::kError, SeverityLevel::kSysError,
  SeverityLevel::kFatal
}
 

Detailed Description

Definition at line 70 of file InitRootHandlers.cc.

Constructor & Destructor Documentation

◆ InitRootHandlers()

edm::service::InitRootHandlers::InitRootHandlers ( ParameterSet const &  pset,
ActivityRegistry iReg 
)
explicit

Definition at line 748 of file InitRootHandlers.cc.

749  : RootHandlers(),
750  unloadSigHandler_(pset.getUntrackedParameter<bool>("UnloadRootSigHandler")),
751  resetErrHandler_(pset.getUntrackedParameter<bool>("ResetRootErrHandler")),
752  loadAllDictionaries_(pset.getUntrackedParameter<bool>("LoadAllDictionaries")),
753  autoLibraryLoader_(loadAllDictionaries_ or pset.getUntrackedParameter<bool>("AutoLibraryLoader")) {
754  stackTracePause_ = pset.getUntrackedParameter<int>("StackTracePauseTime");
755 
756  if (unloadSigHandler_) {
757  // Deactivate all the Root signal handlers and restore the system defaults
758  gSystem->ResetSignal(kSigChild);
759  gSystem->ResetSignal(kSigBus);
760  gSystem->ResetSignal(kSigSegmentationViolation);
761  gSystem->ResetSignal(kSigIllegalInstruction);
762  gSystem->ResetSignal(kSigSystem);
763  gSystem->ResetSignal(kSigPipe);
764  gSystem->ResetSignal(kSigAlarm);
765  gSystem->ResetSignal(kSigUrgent);
766  gSystem->ResetSignal(kSigFloatingException);
767  gSystem->ResetSignal(kSigWindowChanged);
768  } else if (pset.getUntrackedParameter<bool>("AbortOnSignal")) {
769  cachePidInfo();
770 
771  //NOTE: ROOT can also be told to abort on these kinds of problems BUT
772  // it requires an TApplication to be instantiated which causes problems
773  gSystem->ResetSignal(kSigBus);
774  gSystem->ResetSignal(kSigSegmentationViolation);
775  gSystem->ResetSignal(kSigIllegalInstruction);
776  installCustomHandler(SIGBUS, sig_dostack_then_abort);
777  sigBusHandler_ = std::shared_ptr<const void>(nullptr, [](void*) { installCustomHandler(SIGBUS, sig_abort); });
778  installCustomHandler(SIGSEGV, sig_dostack_then_abort);
779  sigSegvHandler_ = std::shared_ptr<const void>(nullptr, [](void*) { installCustomHandler(SIGSEGV, sig_abort); });
780  installCustomHandler(SIGILL, sig_dostack_then_abort);
781  sigIllHandler_ = std::shared_ptr<const void>(nullptr, [](void*) { installCustomHandler(SIGILL, sig_abort); });
782  installCustomHandler(SIGTERM, sig_dostack_then_abort);
783  sigTermHandler_ = std::shared_ptr<const void>(nullptr, [](void*) { installCustomHandler(SIGTERM, sig_abort); });
784  installCustomHandler(SIGABRT, sig_dostack_then_abort);
785  sigAbrtHandler_ = std::shared_ptr<const void>(nullptr, [](void*) {
786  signal(SIGABRT, SIG_DFL); // release SIGABRT to default
787  });
788  }
789 
790  iReg.watchPreallocate([](edm::service::SystemBounds const& iBounds) {
791  if (iBounds.maxNumberOfThreads() > moduleListBuffers_.size()) {
792  moduleListBuffers_.resize(iBounds.maxNumberOfThreads());
793  }
794  });
795 
796  if (resetErrHandler_) {
797  // Replace the Root error handler with one that uses the MessageLogger
798  SetErrorHandler(RootErrorHandler);
799  }
800 
801  // Enable automatic Root library loading.
802  if (autoLibraryLoader_) {
803  gInterpreter->SetClassAutoloading(1);
804  }
805 
806  // Set ROOT parameters.
807  TTree::SetMaxTreeSize(kMaxLong64);
808  TH1::AddDirectory(kFALSE);
809  //G__SetCatchException(0);
810 
811  // Set custom streamers
813 
814  // Load the library containing dictionaries for std:: classes, if not already loaded.
815  if (!hasDictionary(typeid(std::vector<std::vector<unsigned int>>))) {
816  TypeWithDict::byName("std::vector<std::vector<unsigned int> >");
817  }
818 
819  int debugLevel = pset.getUntrackedParameter<int>("DebugLevel");
820  if (debugLevel > 0) {
821  gDebug = debugLevel;
822  }
823 
824  // Enable Root implicit multi-threading
825  bool imt = pset.getUntrackedParameter<bool>("EnableIMT");
826  if (imt && not ROOT::IsImplicitMTEnabled()) {
827  ROOT::EnableImplicitMT();
828  }
829  }

References autoLibraryLoader_, edm::TypeWithDict::byName(), cachePidInfo(), HLT_FULL_cff::debugLevel, edm::hasDictionary(), edm::installCustomHandler(), edm::service::SystemBounds::maxNumberOfThreads(), moduleListBuffers_, muonDTDigis_cfi::pset, resetErrHandler_, edm::setRefCoreStreamerInTClass(), sigAbrtHandler_, sigBusHandler_, sigIllHandler_, sigSegvHandler_, watchdog::SIGTERM, sigTermHandler_, stackTracePause_, unloadSigHandler_, trackerHitRTTI::vector, and edm::ActivityRegistry::watchPreallocate().

◆ ~InitRootHandlers()

edm::service::InitRootHandlers::~InitRootHandlers ( )
override

Definition at line 831 of file InitRootHandlers.cc.

831  {
832  // close all open ROOT files
833  TIter iter(gROOT->GetListOfFiles());
834  TObject* obj = nullptr;
835  while (nullptr != (obj = iter.Next())) {
836  TFile* f = dynamic_cast<TFile*>(obj);
837  if (f) {
838  // We get a new iterator each time,
839  // because closing a file can invalidate the iterator
840  f->Close();
841  iter = TIter(gROOT->GetListOfFiles());
842  }
843  }
844  }

References f, and getGTfromDQMFile::obj.

Member Function Documentation

◆ cachePidInfo()

void edm::service::InitRootHandlers::cachePidInfo ( )
private

Definition at line 885 of file InitRootHandlers.cc.

885  {
886  if (helperThread_) {
887  //Another InitRootHandlers was initialized in this job, possibly
888  // because multiple EventProcessors are being used.
889  //In that case, we are already all setup
890  return;
891  }
892  if (snprintf(pidString_,
893  pidStringLength_ - 1,
894  "date; gdb -quiet -p %d 2>&1 <<EOF |\n"
895  "set width 0\n"
896  "set height 0\n"
897  "set pagination no\n"
898  "thread apply all bt\n"
899  "EOF\n"
900  "/bin/sed -n -e 's/^\\((gdb) \\)*//' -e '/^#/p' -e '/^Thread/p'",
901  getpid()) >= pidStringLength_) {
902  std::ostringstream sstr;
903  sstr << "Unable to pre-allocate stacktrace handler information";
904  edm::Exception except(edm::errors::OtherCMS, sstr.str());
905  throw except;
906  }
907 
908  // These are initialized to -1; harmless to close an invalid FD.
909  // If this is called post-fork, we don't want to be communicating on
910  // these FDs as they are used internally by the parent.
911  close(childToParent_[0]);
912  close(childToParent_[1]);
913  childToParent_[0] = -1;
914  childToParent_[1] = -1;
915  close(parentToChild_[0]);
916  close(parentToChild_[1]);
917  parentToChild_[0] = -1;
918  parentToChild_[1] = -1;
919 
920  if (-1 == pipe2(childToParent_, O_CLOEXEC)) {
921  std::ostringstream sstr;
922  sstr << "Failed to create child-to-parent pipes (errno=" << errno << "): " << strerror(errno);
923  edm::Exception except(edm::errors::OtherCMS, sstr.str());
924  throw except;
925  }
926 
927  if (-1 == pipe2(parentToChild_, O_CLOEXEC)) {
928  close(childToParent_[0]);
929  close(childToParent_[1]);
930  childToParent_[0] = -1;
931  childToParent_[1] = -1;
932  std::ostringstream sstr;
933  sstr << "Failed to create child-to-parent pipes (errno=" << errno << "): " << strerror(errno);
934  edm::Exception except(edm::errors::OtherCMS, sstr.str());
935  throw except;
936  }
937 
938  helperThread_ = std::make_unique<std::thread>(stacktraceHelperThread);
939  helperThread_->detach();
940  }

References childToParent_, helperThread_, edm::errors::OtherCMS, parentToChild_, pidString_, pidStringLength_, and stacktraceHelperThread().

Referenced by InitRootHandlers().

◆ enableWarnings_()

void edm::service::InitRootHandlers::enableWarnings_ ( )
overrideprivatevirtual

Implements edm::RootHandlers.

Definition at line 881 of file InitRootHandlers.cc.

881 { s_ignoreWarnings = edm::RootHandlers::SeverityLevel::kInfo; }

References edm::RootHandlers::kInfo.

◆ fillDescriptions()

void edm::service::InitRootHandlers::fillDescriptions ( ConfigurationDescriptions descriptions)
static

Definition at line 857 of file InitRootHandlers.cc.

857  {
859  desc.setComment("Centralized interface to ROOT.");
860  desc.addUntracked<bool>("UnloadRootSigHandler", false)
861  ->setComment("If True, signals are handled by this service, rather than by ROOT.");
862  desc.addUntracked<bool>("ResetRootErrHandler", true)
863  ->setComment(
864  "If True, ROOT messages (e.g. errors, warnings) are handled by this service, rather than by ROOT.");
865  desc.addUntracked<bool>("AutoLibraryLoader", true)
866  ->setComment("If True, enables automatic loading of data dictionaries.");
867  desc.addUntracked<bool>("LoadAllDictionaries", false)->setComment("If True, loads all ROOT dictionaries.");
868  desc.addUntracked<bool>("EnableIMT", true)->setComment("If True, calls ROOT::EnableImplicitMT().");
869  desc.addUntracked<bool>("AbortOnSignal", true)
870  ->setComment(
871  "If True, do an abort when a signal occurs that causes a crash. If False, ROOT will do an exit which "
872  "attempts to do a clean shutdown.");
873  desc.addUntracked<int>("DebugLevel", 0)->setComment("Sets ROOT's gDebug value.");
874  desc.addUntracked<int>("StackTracePauseTime", 300)
875  ->setComment("Seconds to pause other threads during stack trace.");
876  descriptions.add("InitRootHandlers", desc);
877  }

References edm::ConfigurationDescriptions::add(), and submitPVResolutionJobs::desc.

◆ getPstackArgv()

char *const * edm::service::InitRootHandlers::getPstackArgv ( )
staticprivate

Definition at line 879 of file InitRootHandlers.cc.

879 { return pstackArgv_; }

References pstackArgv_.

Referenced by edm::service::cmssw_stacktrace().

◆ ignoreWarnings_()

void edm::service::InitRootHandlers::ignoreWarnings_ ( edm::RootHandlers::SeverityLevel  level)
overrideprivatevirtual

Implements edm::RootHandlers.

Definition at line 883 of file InitRootHandlers.cc.

883 { s_ignoreWarnings = level; }

References personalPlayback::level.

◆ stacktraceFromThread()

void edm::service::InitRootHandlers::stacktraceFromThread ( )
static

Definition at line 667 of file InitRootHandlers.cc.

667  {
668  int result = full_write(parentToChild_[1], "1");
669  if (result < 0) {
670  full_cerr_write("\n\nAttempt to request stacktrace failed: ");
671  full_cerr_write(strerror(-result));
672  full_cerr_write("\n");
673  return;
674  }
675  char buf[2];
676  buf[1] = '\0';
677  if ((result = full_read(childToParent_[0], buf, 1, 5 * 60)) < 0) {
678  full_cerr_write("\n\nWaiting for stacktrace completion failed: ");
679  if (result == -ETIMEDOUT) {
680  full_cerr_write("timed out waiting for GDB to complete.");
681  } else {
682  full_cerr_write(strerror(-result));
683  }
684  full_cerr_write("\n");
685  return;
686  }
687  }

References visDQMUpload::buf, childToParent_, parentToChild_, and mps_fire::result.

◆ stacktraceHelperThread()

void edm::service::InitRootHandlers::stacktraceHelperThread ( )
staticprivate

Definition at line 624 of file InitRootHandlers.cc.

624  {
625  int toParent = childToParent_[1];
626  int fromParent = parentToChild_[0];
627  char buf[2];
628  buf[1] = '\0';
629 
630  while (true) {
631  int result = full_read(fromParent, buf, 1);
632  if (result < 0) {
633  // To avoid a deadlock (this function is NOT re-entrant), reset signals
634  // We never set them back to the CMSSW handler because we assume the parent
635  // thread will abort for us.
636  set_default_signals();
637  close(toParent);
638  full_cerr_write("\n\nTraceback helper thread failed to read from parent: ");
639  full_cerr_write(strerror(-result));
640  full_cerr_write("\n");
641  ::abort();
642  }
643  if (buf[0] == '1') {
644  set_default_signals();
646  full_write(toParent, buf);
647  } else if (buf[0] == '2') {
648  // We have just finished forking. Reload the file descriptors for thread
649  // communication.
650  close(toParent);
651  close(fromParent);
652  toParent = childToParent_[1];
653  fromParent = parentToChild_[0];
654  } else if (buf[0] == '3') {
655  break;
656  } else {
657  set_default_signals();
658  close(toParent);
659  full_cerr_write("\n\nTraceback helper thread got unknown command from parent: ");
660  full_cerr_write(buf);
661  full_cerr_write("\n");
662  ::abort();
663  }
664  }
665  }

References visDQMUpload::buf, childToParent_, edm::service::cmssw_stacktrace_fork(), parentToChild_, and mps_fire::result.

Referenced by cachePidInfo().

◆ stackTracePause()

static int edm::service::InitRootHandlers::stackTracePause ( )
inlinestatic

Definition at line 100 of file InitRootHandlers.cc.

100 { return stackTracePause_; }

References stackTracePause_.

◆ threadIDs()

static const ThreadTracker::Container_type& edm::service::InitRootHandlers::threadIDs ( )
inlinestatic

Definition at line 99 of file InitRootHandlers.cc.

99 { return threadTracker_.IDs(); }

References edm::service::InitRootHandlers::ThreadTracker::IDs(), and threadTracker_.

◆ willBeUsingThreads()

void edm::service::InitRootHandlers::willBeUsingThreads ( )
overrideprivatevirtual

Implements edm::RootHandlers.

Definition at line 846 of file InitRootHandlers.cc.

846  {
847  //Tell Root we want to be multi-threaded
848  ROOT::EnableThreadSafety();
849 
850  //When threading, also have to keep ROOT from logging all TObjects into a list
851  TObject::SetObjectStat(false);
852 
853  //Have to avoid having Streamers modify themselves after they have been used
854  TVirtualStreamerInfo::Optimize(false);
855  }

Friends And Related Function Documentation

◆ cmssw_stacktrace

int cmssw_stacktrace ( void *  )
friend

Definition at line 720 of file InitRootHandlers.cc.

720  {
721  set_default_signals();
722 
724  // NOTE: this is NOT async-signal-safe at CERN's lxplus service.
725  // CERN uses LD_PRELOAD to replace execv with a function from libsnoopy which
726  // calls dlsym.
727 #ifdef __linux__
728  syscall(SYS_execve, "/bin/sh", argv, __environ);
729 #else
730  execv("/bin/sh", argv);
731 #endif
732  ::abort();
733  return 1;
734  }

Member Data Documentation

◆ autoLibraryLoader_

bool edm::service::InitRootHandlers::autoLibraryLoader_
private

Definition at line 126 of file InitRootHandlers.cc.

Referenced by InitRootHandlers().

◆ childToParent_

int edm::service::InitRootHandlers::childToParent_ = {-1, -1}
staticprivate

Definition at line 118 of file InitRootHandlers.cc.

Referenced by cachePidInfo(), stacktraceFromThread(), and stacktraceHelperThread().

◆ doneModules_

std::atomic< std::size_t > edm::service::InitRootHandlers::doneModules_
static

Definition at line 103 of file InitRootHandlers.cc.

◆ helperThread_

std::unique_ptr< std::thread > edm::service::InitRootHandlers::helperThread_
staticprivate

Definition at line 119 of file InitRootHandlers.cc.

Referenced by cachePidInfo().

◆ loadAllDictionaries_

bool edm::service::InitRootHandlers::loadAllDictionaries_
private

Definition at line 125 of file InitRootHandlers.cc.

◆ moduleListBuffers_

std::vector< std::array< char, moduleBufferSize > > edm::service::InitRootHandlers::moduleListBuffers_
static

Definition at line 102 of file InitRootHandlers.cc.

Referenced by InitRootHandlers().

◆ nextModule_

std::atomic< std::size_t > edm::service::InitRootHandlers::nextModule_
static

Definition at line 103 of file InitRootHandlers.cc.

◆ parentToChild_

int edm::service::InitRootHandlers::parentToChild_ = {-1, -1}
staticprivate

Definition at line 117 of file InitRootHandlers.cc.

Referenced by cachePidInfo(), stacktraceFromThread(), and stacktraceHelperThread().

◆ pidString_

char edm::service::InitRootHandlers::pidString_ = {}
staticprivate

Definition at line 115 of file InitRootHandlers.cc.

Referenced by cachePidInfo().

◆ pidStringLength_

const int edm::service::InitRootHandlers::pidStringLength_ = 200
staticprivate

Definition at line 114 of file InitRootHandlers.cc.

Referenced by cachePidInfo().

◆ pstackArgv_

char *const edm::service::InitRootHandlers::pstackArgv_ = {pstackName, dashC, InitRootHandlers::pidString_, nullptr}
staticprivate

Definition at line 116 of file InitRootHandlers.cc.

Referenced by getPstackArgv().

◆ resetErrHandler_

bool edm::service::InitRootHandlers::resetErrHandler_
private

Definition at line 124 of file InitRootHandlers.cc.

Referenced by InitRootHandlers().

◆ sigAbrtHandler_

std::shared_ptr<const void> edm::service::InitRootHandlers::sigAbrtHandler_
private

Definition at line 131 of file InitRootHandlers.cc.

Referenced by InitRootHandlers().

◆ sigBusHandler_

std::shared_ptr<const void> edm::service::InitRootHandlers::sigBusHandler_
private

Definition at line 127 of file InitRootHandlers.cc.

Referenced by InitRootHandlers().

◆ sigIllHandler_

std::shared_ptr<const void> edm::service::InitRootHandlers::sigIllHandler_
private

Definition at line 129 of file InitRootHandlers.cc.

Referenced by InitRootHandlers().

◆ sigSegvHandler_

std::shared_ptr<const void> edm::service::InitRootHandlers::sigSegvHandler_
private

Definition at line 128 of file InitRootHandlers.cc.

Referenced by InitRootHandlers().

◆ sigTermHandler_

std::shared_ptr<const void> edm::service::InitRootHandlers::sigTermHandler_
private

Definition at line 130 of file InitRootHandlers.cc.

Referenced by InitRootHandlers().

◆ stackTracePause_

int edm::service::InitRootHandlers::stackTracePause_ = 300
staticprivate

Definition at line 121 of file InitRootHandlers.cc.

Referenced by InitRootHandlers(), and stackTracePause().

◆ threadTracker_

InitRootHandlers::ThreadTracker edm::service::InitRootHandlers::threadTracker_
staticprivate

Definition at line 120 of file InitRootHandlers.cc.

Referenced by threadIDs().

◆ unloadSigHandler_

bool edm::service::InitRootHandlers::unloadSigHandler_
private

Definition at line 123 of file InitRootHandlers.cc.

Referenced by InitRootHandlers().

personalPlayback.level
level
Definition: personalPlayback.py:22
edm::service::InitRootHandlers::childToParent_
static int childToParent_[2]
Definition: InitRootHandlers.cc:118
edm::TypeWithDict::byName
static TypeWithDict byName(std::string const &name)
Definition: TypeWithDict.cc:74
cmsBatch.argv
argv
Definition: cmsBatch.py:279
edm::service::InitRootHandlers::helperThread_
static std::unique_ptr< std::thread > helperThread_
Definition: InitRootHandlers.cc:119
edm::service::InitRootHandlers::sigIllHandler_
std::shared_ptr< const void > sigIllHandler_
Definition: InitRootHandlers.cc:129
edm::service::InitRootHandlers::sigTermHandler_
std::shared_ptr< const void > sigTermHandler_
Definition: InitRootHandlers.cc:130
f
double f[11][100]
Definition: MuScleFitUtils.cc:78
edm::service::InitRootHandlers::parentToChild_
static int parentToChild_[2]
Definition: InitRootHandlers.cc:117
edm::service::InitRootHandlers::threadTracker_
static ThreadTracker threadTracker_
Definition: InitRootHandlers.cc:120
edm::RootHandlers::SeverityLevel::kInfo
HLT_FULL_cff.debugLevel
debugLevel
Definition: HLT_FULL_cff.py:84848
edm::service::InitRootHandlers::moduleListBuffers_
static std::vector< std::array< char, moduleBufferSize > > moduleListBuffers_
Definition: InitRootHandlers.cc:102
edm::Exception
Definition: EDMException.h:77
edm::setRefCoreStreamerInTClass
void setRefCoreStreamerInTClass()
Definition: RefCoreStreamer.cc:68
edm::service::cmssw_stacktrace_fork
static void cmssw_stacktrace_fork()
Definition: InitRootHandlers.cc:689
edm::service::InitRootHandlers::pidStringLength_
static const int pidStringLength_
Definition: InitRootHandlers.cc:114
edm::service::InitRootHandlers::stacktraceHelperThread
static void stacktraceHelperThread()
Definition: InitRootHandlers.cc:624
getGTfromDQMFile.obj
obj
Definition: getGTfromDQMFile.py:32
edm::service::InitRootHandlers::getPstackArgv
static char *const * getPstackArgv()
Definition: InitRootHandlers.cc:879
edm::service::SystemBounds
Definition: SystemBounds.h:29
edm::service::SystemBounds::maxNumberOfThreads
unsigned int maxNumberOfThreads() const
Definition: SystemBounds.h:38
edm::service::InitRootHandlers::loadAllDictionaries_
bool loadAllDictionaries_
Definition: InitRootHandlers.cc:125
edm::service::InitRootHandlers::cachePidInfo
void cachePidInfo()
Definition: InitRootHandlers.cc:885
edm::hasDictionary
bool hasDictionary(std::type_info const &)
Definition: TypeWithDict.cc:809
watchdog.SIGTERM
SIGTERM
Definition: watchdog.py:83
trackerHitRTTI::vector
Definition: trackerHitRTTI.h:21
edm::service::InitRootHandlers::sigBusHandler_
std::shared_ptr< const void > sigBusHandler_
Definition: InitRootHandlers.cc:127
edm::service::InitRootHandlers::ThreadTracker::IDs
const Container_type & IDs()
Definition: InitRootHandlers.cc:88
edm::service::InitRootHandlers::stackTracePause_
static int stackTracePause_
Definition: InitRootHandlers.cc:121
visDQMUpload.buf
buf
Definition: visDQMUpload.py:154
edm::service::InitRootHandlers::resetErrHandler_
bool resetErrHandler_
Definition: InitRootHandlers.cc:124
edm::service::InitRootHandlers::sigAbrtHandler_
std::shared_ptr< const void > sigAbrtHandler_
Definition: InitRootHandlers.cc:131
edm::service::InitRootHandlers::pstackArgv_
static char *const pstackArgv_[]
Definition: InitRootHandlers.cc:116
submitPVResolutionJobs.desc
string desc
Definition: submitPVResolutionJobs.py:251
edm::service::InitRootHandlers::pidString_
static char pidString_[pidStringLength_]
Definition: InitRootHandlers.cc:115
edm::errors::OtherCMS
Definition: EDMException.h:27
ParameterSetDescription
edm::service::InitRootHandlers::unloadSigHandler_
bool unloadSigHandler_
Definition: InitRootHandlers.cc:123
or
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
mps_fire.result
result
Definition: mps_fire.py:311
edm::installCustomHandler
void installCustomHandler(int signum, CFUNC func)
Definition: UnixSignalHandlers.cc:93
edm::service::InitRootHandlers::autoLibraryLoader_
bool autoLibraryLoader_
Definition: InitRootHandlers.cc:126
edm::service::InitRootHandlers::sigSegvHandler_
std::shared_ptr< const void > sigSegvHandler_
Definition: InitRootHandlers.cc:128
muonDTDigis_cfi.pset
pset
Definition: muonDTDigis_cfi.py:27