You are required to read and agree to the below before accessing a full-text version of an article in the IDE article repository.

The full-text document you are about to access is subject to national and international copyright laws. In most cases (but not necessarily all) the consequence is that personal use is allowed given that the copyright owner is duly acknowledged and respected. All other use (typically) require an explicit permission (often in writing) by the copyright owner.

For the reports in this repository we specifically note that

  • the use of articles under IEEE copyright is governed by the IEEE copyright policy (available at http://www.ieee.org/web/publications/rights/copyrightpolicy.html)
  • the use of articles under ACM copyright is governed by the ACM copyright policy (available at http://www.acm.org/pubs/copyright_policy/)
  • technical reports and other articles issued by M‰lardalen University is free for personal use. For other use, the explicit consent of the authors is required
  • in other cases, please contact the copyright owner for detailed information

By accepting I agree to acknowledge and respect the rights of the copyright owner of the document I am about to access.

If you are in doubt, feel free to contact webmaster@ide.mdh.se

Preparing for Replay

Fulltext:


Authors:


Publication Type:

Licentiate Thesis

Publisher:

Mälardalen University Press


Abstract

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 real-time 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.

Bibtex

@misc{Huselius515,
author = {Joel Huselius},
title = {Preparing for Replay},
number = {16},
month = {November},
year = {2003},
publisher = {M{\"a}lardalen University Press},
url = {http://www.es.mdu.se/publications/515-}
}