From b26f4a83b36f4df4c6523b665ebf5a2974dd36e6 Mon Sep 17 00:00:00 2001 From: Tim Wojtulewicz Date: Mon, 6 Mar 2023 13:12:45 -0700 Subject: [PATCH] Add trigger_mgr to iosource_mgr later during startup This fixes a potential crash due to trigger_mgr getting shutdown earlier than dns_mgr, and dns_mgr then trying to use it after it's been deleted. This change forces the order of initialization/destruction in iosource_mgr to cause dns_mgr to be deleted first. --- src/Trigger.cc | 6 +++++- src/Trigger.h | 2 ++ src/zeek-setup.cc | 3 +-- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/Trigger.cc b/src/Trigger.cc index 5aa320f2bc..e23509088a 100644 --- a/src/Trigger.cc +++ b/src/Trigger.cc @@ -504,7 +504,6 @@ void Trigger::Modified(notifier::detail::Modifiable* m) Manager::Manager() : iosource::IOSource() { pending = new TriggerList(); - iosource_mgr->Register(this, true); } Manager::~Manager() @@ -512,6 +511,11 @@ Manager::~Manager() delete pending; } +void Manager::InitPostScript() + { + iosource_mgr->Register(this, true); + } + double Manager::GetNextTimeout() { return pending->empty() ? -1 : run_state::network_time + 0.100; diff --git a/src/Trigger.h b/src/Trigger.h index 46f07cffa3..819979351f 100644 --- a/src/Trigger.h +++ b/src/Trigger.h @@ -162,6 +162,8 @@ public: Manager(); ~Manager(); + void InitPostScript(); + double GetNextTimeout() override; void Process() override; const char* Tag() override { return "TriggerMgr"; } diff --git a/src/zeek-setup.cc b/src/zeek-setup.cc index f5f89067d6..1ba3e4270b 100644 --- a/src/zeek-setup.cc +++ b/src/zeek-setup.cc @@ -884,8 +884,7 @@ SetupResult setup(int argc, char** argv, Options* zopts) analyzer_mgr->InitPostScript(); file_mgr->InitPostScript(); dns_mgr->InitPostScript(); - - // dns_mgr->LookupAddr("17.253.144.10"); + trigger_mgr->InitPostScript(); #ifdef USE_PERFTOOLS_DEBUG }