diff --git a/src/CPUSensor.cpp b/src/CPUSensor.cpp
index e955fef..cd1038f 100644
--- a/src/CPUSensor.cpp
+++ b/src/CPUSensor.cpp
@@ -42,7 +42,8 @@
                      bool show, double dtsOffset) :
     Sensor(escapeName(sensorName), std::move(thresholdsIn), sensorConfiguration,
            objectType, false, false, 0, 0, conn, PowerState::on),
-    objServer(objectServer), inputDev(io), waitTimer(io), path(path),
+    std::enable_shared_from_this<CPUSensor>(), objServer(objectServer),
+    inputDev(io), waitTimer(io), path(path),
     privTcontrol(std::numeric_limits<double>::quiet_NaN()),
     dtsOffset(dtsOffset), show(show), pollTime(CPUSensor::sensorPollMs),
     minMaxReadCounter(0)
@@ -95,7 +96,6 @@
 
     // call setup always as not all sensors call setInitialProperties
     setupPowerMatch(conn);
-    setupRead();
 }
 
 CPUSensor::~CPUSensor()
@@ -116,6 +116,8 @@
 
 void CPUSensor::setupRead(void)
 {
+    std::weak_ptr<CPUSensor> weakRef = weak_from_this();
+
     if (readingStateGood())
     {
         inputDev.close();
@@ -126,8 +128,15 @@
 
             boost::asio::async_read_until(
                 inputDev, readBuf, '\n',
-                [&](const boost::system::error_code& ec,
-                    std::size_t /*bytes_transfered*/) { handleResponse(ec); });
+                [weakRef](const boost::system::error_code& ec,
+                          std::size_t /*bytes_transfered*/) {
+                    std::shared_ptr<CPUSensor> self = weakRef.lock();
+                    if (!self)
+                    {
+                        return;
+                    }
+                    self->handleResponse(ec);
+                });
         }
         else
         {
@@ -141,12 +150,17 @@
         markAvailable(false);
     }
     waitTimer.expires_from_now(boost::posix_time::milliseconds(pollTime));
-    waitTimer.async_wait([&](const boost::system::error_code& ec) {
+    waitTimer.async_wait([weakRef](const boost::system::error_code& ec) {
         if (ec == boost::asio::error::operation_aborted)
         {
             return; // we're being canceled
         }
-        setupRead();
+        std::shared_ptr<CPUSensor> self = weakRef.lock();
+        if (!self)
+        {
+            return;
+        }
+        self->setupRead();
     });
 }
 
diff --git a/src/CPUSensorMain.cpp b/src/CPUSensorMain.cpp
index b344a6c..a352735 100644
--- a/src/CPUSensorMain.cpp
+++ b/src/CPUSensorMain.cpp
@@ -51,7 +51,7 @@
 
 static constexpr bool debug = false;
 
-boost::container::flat_map<std::string, std::unique_ptr<CPUSensor>> gCpuSensors;
+boost::container::flat_map<std::string, std::shared_ptr<CPUSensor>> gCpuSensors;
 boost::container::flat_map<std::string,
                            std::shared_ptr<sdbusplus::asio::dbus_interface>>
     inventoryIfaces;
@@ -381,10 +381,11 @@
             auto& sensorPtr = gCpuSensors[sensorName];
             // make sure destructor fires before creating a new one
             sensorPtr = nullptr;
-            sensorPtr = std::make_unique<CPUSensor>(
+            sensorPtr = std::make_shared<CPUSensor>(
                 inputPathStr, sensorType, objectServer, dbusConnection, io,
                 sensorName, std::move(sensorThresholds), *interfacePath, cpuId,
                 show, dtsOffset);
+            sensorPtr->setupRead();
             createdSensors.insert(sensorName);
             if (debug)
             {
