From 4310a3bd17a56cd4e6ee6d61513b1ee8c5f327df Mon Sep 17 00:00:00 2001 From: sangelovic Date: Sun, 19 Jan 2020 18:57:14 +0100 Subject: [PATCH] Little fix of order of destruction in stress tests --- src/Message.cpp | 18 ++++++++++++++++++ src/Object.cpp | 1 + tests/stresstests/sdbus-c++-stress-tests.cpp | 8 ++++---- 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/src/Message.cpp b/src/Message.cpp index 851303f..6356fd4 100644 --- a/src/Message.cpp +++ b/src/Message.cpp @@ -737,6 +737,24 @@ PlainMessage createPlainMessage() sd_bus* bus_{}; } busReferenceKeeper{bus}; +// thread_local struct BusKeeper +// { +// BusKeeper() +// { +// auto r = sd_bus_open_system(&bus); +// sd_bus_flush(bus); +// SDBUS_THROW_ERROR_IF(r < 0, "Failed to get default system bus", -r); +// } + +// ~BusKeeper() +// { +// sd_bus_flush_close_unref(bus); +// } + +// sd_bus* bus{}; +// internal::SdBus intf; +// } busKeeper; + // Shelved here as handy thing for potential future tracing purposes: //#include //#include diff --git a/src/Object.cpp b/src/Object.cpp index d74e27f..be971c9 100644 --- a/src/Object.cpp +++ b/src/Object.cpp @@ -125,6 +125,7 @@ void Object::finishRegistration() void Object::unregister() { interfaces_.clear(); + removeObjectManager(); } sdbus::Signal Object::createSignal(const std::string& interfaceName, const std::string& signalName) diff --git a/tests/stresstests/sdbus-c++-stress-tests.cpp b/tests/stresstests/sdbus-c++-stress-tests.cpp index 1e808c1..212fe2a 100644 --- a/tests/stresstests/sdbus-c++-stress-tests.cpp +++ b/tests/stresstests/sdbus-c++-stress-tests.cpp @@ -154,12 +154,12 @@ public: ~FahrenheitThermometerAdaptor() { - unregisterAdaptor(); - exit_ = true; cond_.notify_all(); for (auto& worker : workers_) worker.join(); + + unregisterAdaptor(); } protected: @@ -264,12 +264,12 @@ public: ~ConcatenatorAdaptor() { - unregisterAdaptor(); - exit_ = true; cond_.notify_all(); for (auto& worker : workers_) worker.join(); + + unregisterAdaptor(); } protected: