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 interactiveDebug_
 
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 std::unique_ptr< ThreadTrackerthreadTracker_
 

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 71 of file InitRootHandlers.cc.

Constructor & Destructor Documentation

◆ InitRootHandlers()

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

Definition at line 763 of file InitRootHandlers.cc.

764  : RootHandlers(),
765  unloadSigHandler_(pset.getUntrackedParameter<bool>("UnloadRootSigHandler")),
766  resetErrHandler_(pset.getUntrackedParameter<bool>("ResetRootErrHandler")),
767  loadAllDictionaries_(pset.getUntrackedParameter<bool>("LoadAllDictionaries")),
768  autoLibraryLoader_(loadAllDictionaries_ or pset.getUntrackedParameter<bool>("AutoLibraryLoader")),
769  interactiveDebug_(pset.getUntrackedParameter<bool>("InteractiveDebug")) {
770  stackTracePause_ = pset.getUntrackedParameter<int>("StackTracePauseTime");
771 
772  if (not threadTracker_) {
773  threadTracker_ = std::make_unique<ThreadTracker>();
774  iReg.watchPostEndJob([]() {
775  if (threadTracker_) {
776  threadTracker_->observe(false);
777  }
778  });
779  }
780 
781  if (unloadSigHandler_) {
782  // Deactivate all the Root signal handlers and restore the system defaults
783  gSystem->ResetSignal(kSigChild);
784  gSystem->ResetSignal(kSigBus);
785  gSystem->ResetSignal(kSigSegmentationViolation);
786  gSystem->ResetSignal(kSigIllegalInstruction);
787  gSystem->ResetSignal(kSigSystem);
788  gSystem->ResetSignal(kSigPipe);
789  gSystem->ResetSignal(kSigAlarm);
790  gSystem->ResetSignal(kSigUrgent);
791  gSystem->ResetSignal(kSigFloatingException);
792  gSystem->ResetSignal(kSigWindowChanged);
793  } else if (pset.getUntrackedParameter<bool>("AbortOnSignal")) {
794  cachePidInfo();
795 
796  //NOTE: ROOT can also be told to abort on these kinds of problems BUT
797  // it requires an TApplication to be instantiated which causes problems
798  gSystem->ResetSignal(kSigBus);
799  gSystem->ResetSignal(kSigSegmentationViolation);
800  gSystem->ResetSignal(kSigIllegalInstruction);
801  installCustomHandler(SIGBUS, sig_dostack_then_abort);
802  sigBusHandler_ = std::shared_ptr<const void>(nullptr, [](void*) { installCustomHandler(SIGBUS, sig_abort); });
803  installCustomHandler(SIGSEGV, sig_dostack_then_abort);
804  sigSegvHandler_ = std::shared_ptr<const void>(nullptr, [](void*) { installCustomHandler(SIGSEGV, sig_abort); });
805  installCustomHandler(SIGILL, sig_dostack_then_abort);
806  sigIllHandler_ = std::shared_ptr<const void>(nullptr, [](void*) { installCustomHandler(SIGILL, sig_abort); });
807  installCustomHandler(SIGTERM, sig_dostack_then_abort);
808  sigTermHandler_ = std::shared_ptr<const void>(nullptr, [](void*) { installCustomHandler(SIGTERM, sig_abort); });
809  installCustomHandler(SIGABRT, sig_dostack_then_abort);
810  sigAbrtHandler_ = std::shared_ptr<const void>(nullptr, [](void*) {
811  signal(SIGABRT, SIG_DFL); // release SIGABRT to default
812  });
813  }
814 
815  iReg.watchPreallocate([](edm::service::SystemBounds const& iBounds) {
816  if (iBounds.maxNumberOfThreads() > moduleListBuffers_.size()) {
817  moduleListBuffers_.resize(iBounds.maxNumberOfThreads());
818  }
819  });
820 
821  if (resetErrHandler_) {
822  // Replace the Root error handler with one that uses the MessageLogger
823  SetErrorHandler(RootErrorHandler);
824  }
825 
826  // Enable automatic Root library loading.
827  if (autoLibraryLoader_) {
828  gInterpreter->SetClassAutoloading(1);
829  }
830 
831  // Set ROOT parameters.
832  TTree::SetMaxTreeSize(kMaxLong64);
833  TH1::AddDirectory(kFALSE);
834  //G__SetCatchException(0);
835 
836  // Set custom streamers
838 
839  // Load the library containing dictionaries for std:: classes, if not already loaded.
840  if (!hasDictionary(typeid(std::vector<std::vector<unsigned int>>))) {
841  TypeWithDict::byName("std::vector<std::vector<unsigned int> >");
842  }
843 
844  int debugLevel = pset.getUntrackedParameter<int>("DebugLevel");
845  if (debugLevel > 0) {
846  gDebug = debugLevel;
847  }
848 
849  // Enable Root implicit multi-threading
850  bool imt = pset.getUntrackedParameter<bool>("EnableIMT");
851  if (imt && not ROOT::IsImplicitMTEnabled()) {
852  //cmsRun uses global_control to set the number of allowed threads to use
853  // we need to tell ROOT the same value in order to avoid unnecessary warnings
854  ROOT::EnableImplicitMT(tbb::global_control::active_value(tbb::global_control::max_allowed_parallelism));
855  }
856  }

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_, threadTracker_, unloadSigHandler_, trackerHitRTTI::vector, edm::ActivityRegistry::watchPostEndJob(), and edm::ActivityRegistry::watchPreallocate().

◆ ~InitRootHandlers()

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

Definition at line 858 of file InitRootHandlers.cc.

858  {
859  // close all open ROOT files
860  TIter iter(gROOT->GetListOfFiles());
861  TObject* obj = nullptr;
862  while (nullptr != (obj = iter.Next())) {
863  TFile* f = dynamic_cast<TFile*>(obj);
864  if (f) {
865  // We get a new iterator each time,
866  // because closing a file can invalidate the iterator
867  f->Close();
868  iter = TIter(gROOT->GetListOfFiles());
869  }
870  }
871  //disengage from TBB to avoid possible at exit problems
872  threadTracker_.reset();
873  }

References f, getGTfromDQMFile::obj, and threadTracker_.

Member Function Documentation

◆ cachePidInfo()

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

Definition at line 918 of file InitRootHandlers.cc.

918  {
919  if (helperThread_) {
920  //Another InitRootHandlers was initialized in this job, possibly
921  // because multiple EventProcessors are being used.
922  //In that case, we are already all setup
923  return;
924  }
925  std::string gdbcmd{"date; gdb -quiet -p %d"};
926  if (!interactiveDebug_) {
927  gdbcmd +=
928  " 2>&1 <<EOF |\n"
929  "set width 0\n"
930  "set height 0\n"
931  "set pagination no\n"
932  "thread apply all bt\n"
933  "EOF\n"
934  "/bin/sed -n -e 's/^\\((gdb) \\)*//' -e '/^#/p' -e '/^Thread/p'";
935  }
936  if (snprintf(pidString_, pidStringLength_ - 1, gdbcmd.c_str(), getpid()) >= pidStringLength_) {
937  std::ostringstream sstr;
938  sstr << "Unable to pre-allocate stacktrace handler information";
939  edm::Exception except(edm::errors::OtherCMS, sstr.str());
940  throw except;
941  }
942 
943  // These are initialized to -1; harmless to close an invalid FD.
944  // If this is called post-fork, we don't want to be communicating on
945  // these FDs as they are used internally by the parent.
946  close(childToParent_[0]);
947  close(childToParent_[1]);
948  childToParent_[0] = -1;
949  childToParent_[1] = -1;
950  close(parentToChild_[0]);
951  close(parentToChild_[1]);
952  parentToChild_[0] = -1;
953  parentToChild_[1] = -1;
954 
955  if (-1 == pipe2(childToParent_, O_CLOEXEC)) {
956  std::ostringstream sstr;
957  sstr << "Failed to create child-to-parent pipes (errno=" << errno << "): " << strerror(errno);
958  edm::Exception except(edm::errors::OtherCMS, sstr.str());
959  throw except;
960  }
961 
962  if (-1 == pipe2(parentToChild_, O_CLOEXEC)) {
963  close(childToParent_[0]);
964  close(childToParent_[1]);
965  childToParent_[0] = -1;
966  childToParent_[1] = -1;
967  std::ostringstream sstr;
968  sstr << "Failed to create child-to-parent pipes (errno=" << errno << "): " << strerror(errno);
969  edm::Exception except(edm::errors::OtherCMS, sstr.str());
970  throw except;
971  }
972 
973  helperThread_ = std::make_unique<std::thread>(stacktraceHelperThread);
974  helperThread_->detach();
975  }

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

Referenced by InitRootHandlers().

◆ enableWarnings_()

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

Implements edm::RootHandlers.

Definition at line 914 of file InitRootHandlers.cc.

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

References edm::RootHandlers::kInfo.

◆ fillDescriptions()

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

Definition at line 886 of file InitRootHandlers.cc.

886  {
888  desc.setComment("Centralized interface to ROOT.");
889  desc.addUntracked<bool>("UnloadRootSigHandler", false)
890  ->setComment("If True, signals are handled by this service, rather than by ROOT.");
891  desc.addUntracked<bool>("ResetRootErrHandler", true)
892  ->setComment(
893  "If True, ROOT messages (e.g. errors, warnings) are handled by this service, rather than by ROOT.");
894  desc.addUntracked<bool>("AutoLibraryLoader", true)
895  ->setComment("If True, enables automatic loading of data dictionaries.");
896  desc.addUntracked<bool>("LoadAllDictionaries", false)->setComment("If True, loads all ROOT dictionaries.");
897  desc.addUntracked<bool>("EnableIMT", true)->setComment("If True, calls ROOT::EnableImplicitMT().");
898  desc.addUntracked<bool>("AbortOnSignal", true)
899  ->setComment(
900  "If True, do an abort when a signal occurs that causes a crash. If False, ROOT will do an exit which "
901  "attempts to do a clean shutdown.");
902  desc.addUntracked<bool>("InteractiveDebug", false)
903  ->setComment(
904  "If True, leave gdb attached to cmsRun after a crash; "
905  "if False, attach gdb, print a stack trace, and quit gdb");
906  desc.addUntracked<int>("DebugLevel", 0)->setComment("Sets ROOT's gDebug value.");
907  desc.addUntracked<int>("StackTracePauseTime", 300)
908  ->setComment("Seconds to pause other threads during stack trace.");
909  descriptions.add("InitRootHandlers", desc);
910  }

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

◆ getPstackArgv()

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

Definition at line 912 of file InitRootHandlers.cc.

912 { 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 916 of file InitRootHandlers.cc.

916 { s_ignoreWarnings = level; }

References personalPlayback::level.

◆ stacktraceFromThread()

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

Definition at line 682 of file InitRootHandlers.cc.

682  {
683  int result = full_write(parentToChild_[1], "1");
684  if (result < 0) {
685  full_cerr_write("\n\nAttempt to request stacktrace failed: ");
686  full_cerr_write(strerror(-result));
687  full_cerr_write("\n");
688  return;
689  }
690  char buf[2];
691  buf[1] = '\0';
692  if ((result = full_read(childToParent_[0], buf, 1, 5 * 60)) < 0) {
693  full_cerr_write("\n\nWaiting for stacktrace completion failed: ");
694  if (result == -ETIMEDOUT) {
695  full_cerr_write("timed out waiting for GDB to complete.");
696  } else {
697  full_cerr_write(strerror(-result));
698  }
699  full_cerr_write("\n");
700  return;
701  }
702  }

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

◆ stacktraceHelperThread()

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

Definition at line 639 of file InitRootHandlers.cc.

639  {
640  int toParent = childToParent_[1];
641  int fromParent = parentToChild_[0];
642  char buf[2];
643  buf[1] = '\0';
644 
645  while (true) {
646  int result = full_read(fromParent, buf, 1);
647  if (result < 0) {
648  // To avoid a deadlock (this function is NOT re-entrant), reset signals
649  // We never set them back to the CMSSW handler because we assume the parent
650  // thread will abort for us.
651  set_default_signals();
652  close(toParent);
653  full_cerr_write("\n\nTraceback helper thread failed to read from parent: ");
654  full_cerr_write(strerror(-result));
655  full_cerr_write("\n");
656  ::abort();
657  }
658  if (buf[0] == '1') {
659  set_default_signals();
661  full_write(toParent, buf);
662  } else if (buf[0] == '2') {
663  // We have just finished forking. Reload the file descriptors for thread
664  // communication.
665  close(toParent);
666  close(fromParent);
667  toParent = childToParent_[1];
668  fromParent = parentToChild_[0];
669  } else if (buf[0] == '3') {
670  break;
671  } else {
672  set_default_signals();
673  close(toParent);
674  full_cerr_write("\n\nTraceback helper thread got unknown command from parent: ");
675  full_cerr_write(buf);
676  full_cerr_write("\n");
677  ::abort();
678  }
679  }
680  }

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 110 of file InitRootHandlers.cc.

110 { return stackTracePause_; }

References stackTracePause_.

◆ threadIDs()

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

Definition at line 103 of file InitRootHandlers.cc.

103  {
105  if (threadTracker_) {
106  return threadTracker_->IDs();
107  }
108  return empty;
109  }

References relativeConstraints::empty, and threadTracker_.

◆ willBeUsingThreads()

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

Implements edm::RootHandlers.

Definition at line 875 of file InitRootHandlers.cc.

875  {
876  //Tell Root we want to be multi-threaded
877  ROOT::EnableThreadSafety();
878 
879  //When threading, also have to keep ROOT from logging all TObjects into a list
880  TObject::SetObjectStat(false);
881 
882  //Have to avoid having Streamers modify themselves after they have been used
883  TVirtualStreamerInfo::Optimize(false);
884  }

Friends And Related Function Documentation

◆ cmssw_stacktrace

int cmssw_stacktrace ( void *  )
friend

Definition at line 735 of file InitRootHandlers.cc.

735  {
736  set_default_signals();
737 
739  // NOTE: this is NOT async-signal-safe at CERN's lxplus service.
740  // CERN uses LD_PRELOAD to replace execv with a function from libsnoopy which
741  // calls dlsym.
742 #ifdef __linux__
743  syscall(SYS_execve, "/bin/sh", argv, __environ);
744 #else
745  execv("/bin/sh", argv);
746 #endif
747  ::abort();
748  return 1;
749  }

Member Data Documentation

◆ autoLibraryLoader_

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

Definition at line 136 of file InitRootHandlers.cc.

Referenced by InitRootHandlers().

◆ childToParent_

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

Definition at line 128 of file InitRootHandlers.cc.

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

◆ doneModules_

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

Definition at line 113 of file InitRootHandlers.cc.

◆ helperThread_

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

Definition at line 129 of file InitRootHandlers.cc.

Referenced by cachePidInfo().

◆ interactiveDebug_

bool edm::service::InitRootHandlers::interactiveDebug_
private

Definition at line 137 of file InitRootHandlers.cc.

Referenced by cachePidInfo().

◆ loadAllDictionaries_

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

Definition at line 135 of file InitRootHandlers.cc.

◆ moduleListBuffers_

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

Definition at line 112 of file InitRootHandlers.cc.

Referenced by InitRootHandlers().

◆ nextModule_

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

Definition at line 113 of file InitRootHandlers.cc.

◆ parentToChild_

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

Definition at line 127 of file InitRootHandlers.cc.

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

◆ pidString_

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

Definition at line 125 of file InitRootHandlers.cc.

Referenced by cachePidInfo().

◆ pidStringLength_

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

Definition at line 124 of file InitRootHandlers.cc.

Referenced by cachePidInfo().

◆ pstackArgv_

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

Definition at line 126 of file InitRootHandlers.cc.

Referenced by getPstackArgv().

◆ resetErrHandler_

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

Definition at line 134 of file InitRootHandlers.cc.

Referenced by InitRootHandlers().

◆ sigAbrtHandler_

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

Definition at line 142 of file InitRootHandlers.cc.

Referenced by InitRootHandlers().

◆ sigBusHandler_

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

Definition at line 138 of file InitRootHandlers.cc.

Referenced by InitRootHandlers().

◆ sigIllHandler_

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

Definition at line 140 of file InitRootHandlers.cc.

Referenced by InitRootHandlers().

◆ sigSegvHandler_

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

Definition at line 139 of file InitRootHandlers.cc.

Referenced by InitRootHandlers().

◆ sigTermHandler_

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

Definition at line 141 of file InitRootHandlers.cc.

Referenced by InitRootHandlers().

◆ stackTracePause_

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

Definition at line 131 of file InitRootHandlers.cc.

Referenced by InitRootHandlers(), and stackTracePause().

◆ threadTracker_

std::unique_ptr< InitRootHandlers::ThreadTracker > edm::service::InitRootHandlers::threadTracker_
staticprivate

Definition at line 130 of file InitRootHandlers.cc.

Referenced by InitRootHandlers(), threadIDs(), and ~InitRootHandlers().

◆ unloadSigHandler_

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

Definition at line 133 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:128
edm::TypeWithDict::byName
static TypeWithDict byName(std::string const &name)
Definition: TypeWithDict.cc:74
cmsBatch.argv
argv
Definition: cmsBatch.py:279
edm::service::InitRootHandlers::threadTracker_
static std::unique_ptr< ThreadTracker > threadTracker_
Definition: InitRootHandlers.cc:130
edm::service::InitRootHandlers::helperThread_
static std::unique_ptr< std::thread > helperThread_
Definition: InitRootHandlers.cc:129
edm::service::InitRootHandlers::sigIllHandler_
std::shared_ptr< const void > sigIllHandler_
Definition: InitRootHandlers.cc:140
edm::service::InitRootHandlers::sigTermHandler_
std::shared_ptr< const void > sigTermHandler_
Definition: InitRootHandlers.cc:141
edm::service::InitRootHandlers::interactiveDebug_
bool interactiveDebug_
Definition: InitRootHandlers.cc:137
f
double f[11][100]
Definition: MuScleFitUtils.cc:78
edm::service::InitRootHandlers::parentToChild_
static int parentToChild_[2]
Definition: InitRootHandlers.cc:127
edm::service::InitRootHandlers::ThreadTracker::Container_type
tbb::concurrent_unordered_set< pthread_t > Container_type
Definition: InitRootHandlers.cc:77
edm::RootHandlers::SeverityLevel::kInfo
HLT_FULL_cff.debugLevel
debugLevel
Definition: HLT_FULL_cff.py:88192
edm::service::InitRootHandlers::moduleListBuffers_
static std::vector< std::array< char, moduleBufferSize > > moduleListBuffers_
Definition: InitRootHandlers.cc:112
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:704
edm::service::InitRootHandlers::pidStringLength_
static const int pidStringLength_
Definition: InitRootHandlers.cc:124
edm::service::InitRootHandlers::stacktraceHelperThread
static void stacktraceHelperThread()
Definition: InitRootHandlers.cc:639
getGTfromDQMFile.obj
obj
Definition: getGTfromDQMFile.py:32
edm::service::InitRootHandlers::getPstackArgv
static char *const * getPstackArgv()
Definition: InitRootHandlers.cc:912
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:135
edm::service::InitRootHandlers::cachePidInfo
void cachePidInfo()
Definition: InitRootHandlers.cc:918
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:138
edm::service::InitRootHandlers::stackTracePause_
static int stackTracePause_
Definition: InitRootHandlers.cc:131
visDQMUpload.buf
buf
Definition: visDQMUpload.py:160
AlCaHLTBitMon_QueryRunRegistry.string
string string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
edm::service::InitRootHandlers::resetErrHandler_
bool resetErrHandler_
Definition: InitRootHandlers.cc:134
edm::service::InitRootHandlers::sigAbrtHandler_
std::shared_ptr< const void > sigAbrtHandler_
Definition: InitRootHandlers.cc:142
edm::service::InitRootHandlers::pstackArgv_
static char *const pstackArgv_[]
Definition: InitRootHandlers.cc:126
submitPVResolutionJobs.desc
string desc
Definition: submitPVResolutionJobs.py:251
edm::service::InitRootHandlers::pidString_
static char pidString_[pidStringLength_]
Definition: InitRootHandlers.cc:125
relativeConstraints.empty
bool empty
Definition: relativeConstraints.py:46
edm::errors::OtherCMS
Definition: EDMException.h:27
ParameterSetDescription
edm::service::InitRootHandlers::unloadSigHandler_
bool unloadSigHandler_
Definition: InitRootHandlers.cc:133
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:136
edm::service::InitRootHandlers::sigSegvHandler_
std::shared_ptr< const void > sigSegvHandler_
Definition: InitRootHandlers.cc:139
muonDTDigis_cfi.pset
pset
Definition: muonDTDigis_cfi.py:27