Preparing for replay

Joel Huselius · Diva portal (Dalarna University Library) · 2003

Cyclic debugging is the process normally used for examining and removing bugs in computer systems. For this process, the possibility to deterministically repeat executions is a requirement without repeatible experiments, it is not certain that existing bugs can be located. Thus, in order to debug realtime systems, which normally do not allow repeatable experiments, additional methods are needed to provide repeatability. Several solutions based on a resource demanding record/replay approach have been proposed: By recording data describing the occurencies of non-deterministic events during a reference execution, and then using this data to force a consequtive replay excecution to perform in the same way as the reference, repeatability in experiments is achieved. We adhere to the previous work on deterministic replay by Thane et al. The method assumes that memory resources have limited capacity compared to the amount of data recorded. This assumption leads to that data available after the completion of the reference execution does not cover the reference execution in its entirety, wherefore replay must be started from a state which is not the initial state of the system. To facilitate this, at predefined locations in the code, checkpoints are taken of the individual task-states. In order to reduce the overhead imposed on the system, checkpoints are not required to be exhaustive, only to cover the parts of the data-space with non-deterministic properties. The combination of these factors leads to an environment that requires new methods for initiating replay one of the contribution of this thesis is such a method. By treating each task in the system independently, we show (by means of an industrial case-study) that a restarted version of the system can be made to look like the reference execution. In order to guarantee that a replay execution can always be performed, the addition of this new method triggers the requirement of new dynamic methods for managing data during recording. The second contribution of this thesis is a dynamic memory manager that fills this gap and is also shown to improve memory utilization in sporadic real-time systems.

Read the paper · More papers on PaperTik