A method comprising: monitoring a plurality of debug trace data streams for a redundantly operating system including a corresponding plurality of cores performing a task in parallel and a supervisor, said cores being connected to the supervisor by associated debug trace data streams and the supervisor being in turn connected to each of the cores via an associated restart path to signal when a given core is to be taken offline, reset, reinitialized, reloaded with data from another core and combinations thereof; in response to detecting a state difference on one debug trace data stream of the plurality of debug trace data streams relative to other debug trace data streams of the plurality of debug trace data streams: marking a given core associated with the one debug trace data stream as an affected core; determining how many unaffected cores remain in the plurality of cores; when fewer than two cores remain unaffected, restarting the affected core; when two or more cores remain unaffected, proceed with stopping the affected cores and continues monitoring the debug trace data streams of the unaffected core; determining a safe restart time based on a safety profile of a device controlled by the system; in response to determining the system is not in a safe restart time, continuing to operate the system with a reduced set of active cores; in response to determing the system is in a safe restart time, restarting the affected cores. monitoring a plurality of debug trace data streams for a redundantly operating system including a corresponding plurality of cores performing a task in parallel and a supervisor, said cores being connected to the supervisor by associated debug trace data streams and the supervisor being in turn connected to each of the cores via an associated restart path to signal when a given core is to be taken offline, reset, reinitialized, reloaded with data from another core and combinations thereof; in response to detecting a state difference on one debug trace data stream of the plurality of debug trace data streams relative to other debug trace data streams of the plurality of debug trace data streams: marking a given core associated with the one debug trace data stream as an affected core; determining how many unaffected cores remain in the plurality of cores; when fewer than two cores remain unaffected, restarting the affected core; when two or more cores remain unaffected, proceed with stopping the affected cores and continues monitoring the debug trace data streams of the unaffected core; determining a safe restart time based on a safety profile of a device controlled by the system; in response to determining the system is not in a safe restart time, continuing to operate the system with a reduced set of active cores; in response to determing the system is in a safe restart time, restarting the affected cores. marking a given core associated with the one debug trace data stream as an affected core; determining how many unaffected cores remain in the plurality of cores; when fewer than two cores remain unaffected, restarting the affected core; when two or more cores remain unaffected, proceed with stopping the affected cores and continues monitoring the debug trace data streams of the unaffected core; determining a safe restart time based on a safety profile of a device controlled by the system; in response to determining the system is not in a safe restart time, continuing to operate the system with a reduced set of active cores; in response to determing the system is in a safe restart time, restarting the affected cores.