diff --git a/include/error_monitors/err2_monitor.hpp b/include/error_monitors/err2_monitor.hpp
index ffa099e..66315d8 100644
--- a/include/error_monitors/err2_monitor.hpp
+++ b/include/error_monitors/err2_monitor.hpp
@@ -39,17 +39,21 @@
         conn->async_method_call(
             [this](boost::system::error_code ec,
                    const std::variant<bool>& property) {
-                if (ec)
+                // Default to no reset after Crashdump
+                bool reset = false;
+                if (!ec)
                 {
-                    return;
+                    const bool* resetPtr = std::get_if<bool>(&property);
+                    if (resetPtr == nullptr)
+                    {
+                        std::cerr << "Unable to read reset on ERR2 value\n";
+                    }
+                    else
+                    {
+                        reset = *resetPtr;
+                    }
                 }
-                const bool* reset = std::get_if<bool>(&property);
-                if (reset == nullptr)
-                {
-                    std::cerr << "Unable to read reset on ERR2 value\n";
-                    return;
-                }
-                startCrashdumpAndRecovery(conn, *reset, "ERR2 Timeout");
+                startCrashdumpAndRecovery(conn, reset, "ERR2 Timeout");
             },
             "xyz.openbmc_project.Settings",
             "/xyz/openbmc_project/control/processor_error_config",
diff --git a/include/error_monitors/ierr_monitor.hpp b/include/error_monitors/ierr_monitor.hpp
index e743177..025f899 100644
--- a/include/error_monitors/ierr_monitor.hpp
+++ b/include/error_monitors/ierr_monitor.hpp
@@ -363,17 +363,21 @@
         conn->async_method_call(
             [this](boost::system::error_code ec,
                    const std::variant<bool>& property) {
-                if (ec)
+                // Default to no reset after Crashdump
+                bool reset = false;
+                if (!ec)
                 {
-                    return;
+                    const bool* resetPtr = std::get_if<bool>(&property);
+                    if (resetPtr == nullptr)
+                    {
+                        std::cerr << "Unable to read reset on CATERR value\n";
+                    }
+                    else
+                    {
+                        reset = *resetPtr;
+                    }
                 }
-                const bool* reset = std::get_if<bool>(&property);
-                if (reset == nullptr)
-                {
-                    std::cerr << "Unable to read reset on CATERR value\n";
-                    return;
-                }
-                startCrashdumpAndRecovery(conn, *reset, "IERR");
+                startCrashdumpAndRecovery(conn, reset, "IERR");
             },
             "xyz.openbmc_project.Settings",
             "/xyz/openbmc_project/control/processor_error_config",
diff --git a/include/error_monitors/smi_monitor.hpp b/include/error_monitors/smi_monitor.hpp
index 5c3d07c..f633b2e 100644
--- a/include/error_monitors/smi_monitor.hpp
+++ b/include/error_monitors/smi_monitor.hpp
@@ -50,21 +50,25 @@
         conn->async_method_call(
             [this](boost::system::error_code ec,
                    const std::variant<bool>& property) {
-                if (ec)
+                // Default to no reset after Crashdump
+                bool reset = false;
+                if (!ec)
                 {
-                    return;
-                }
-                const bool* reset = std::get_if<bool>(&property);
-                if (reset == nullptr)
-                {
-                    std::cerr << "Unable to read reset on " << signalName
-                              << " value\n";
-                    return;
+                    const bool* resetPtr = std::get_if<bool>(&property);
+                    if (resetPtr == nullptr)
+                    {
+                        std::cerr << "Unable to read reset on " << signalName
+                                  << " value\n";
+                    }
+                    else
+                    {
+                        reset = *resetPtr;
+                    }
                 }
 #ifdef HOST_ERROR_CRASHDUMP_ON_SMI_TIMEOUT
-                startCrashdumpAndRecovery(conn, *reset, "SMI Timeout");
+                startCrashdumpAndRecovery(conn, reset, "SMI Timeout");
 #else
-                if (*reset)
+                if (reset)
                 {
                     std::cout << "Recovering the system\n";
                     startWarmReset(conn);
