Abstract
In this paper, we propose an automated technique for optimal instrumentation of multi-threaded programs for debugging and testing of concurrent data structures. We define a notion of observability that enables debuggers to trace back and locate errors through data-flow instrumentation. Observability in a concurrent program enables a debugger to extract the value of a set of desired variables through instrumenting another (possibly smaller) set of variables. We formulate an optimization problem that aims at minimizing the size of the latter set. In order to cope with the exponential complexity of the problem, we present a SAT-based solution. Our approach is fully implemented and experimental results on popular concurrent data structures (e.g., linked lists and red-black trees) show significant performance improvement in optimally-instrumented programs using our method as compared to ad-hoc over-instrumented programs.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Yices: An SMT Solver, http://yices.csl.sri.com
Ammann, P., Offutt, J.: Introduction to Software Testing. Cambridge University Press, New York (2008)
Attiya, H., Hillel, E.: Built-In Coloring for Highly-Concurrent Doubly-Linked Lists. In: Dolev, S. (ed.) DISC 2006. LNCS, vol. 4167, pp. 31–45. Springer, Heidelberg (2006)
Cytron, R., Ferrante, J., Rosen, B.K., Wegman, M.N., Zadeck, F.K.: Efficiently Computing Static Single Assignment Form and the Control Dependence Graph. ACM Transactions on Programming Languages and Systems 13(4), 451–490 (1991)
Fraser, K., Harris, T.: Concurrent programming without locks. ACM Trans. Comput. Syst. 25(2) (2007)
Harris, T.L.: A Pragmatic Implementation of Non-Blocking Linked-Lists. In: Welch, J.L. (ed.) DISC 2001. LNCS, vol. 2180, pp. 300–314. Springer, Heidelberg (2001)
Lattner, C., Adve, V.: Llvm: A compilation framework for lifelong program analysis and transformation. In: CGO, p. 75 (2004)
Lee, J., Midkiff, S.P., Padua, D.A.: A constant propagation algorithm for explicitly parallel programs. International Journal of Parallel Programming 26(5), 563–589 (1998)
Nanda, M.G., Ramesh, S.: Slicing concurrent programs. In: ISSTA, pp. 180–190 (2000)
Navabpour, S., Bonakdarpour, B., Fischmeister, S.: Software debugging and testing using the abstract diagnosis theory. In: LCTES, pp. 111–120 (2011)
Ottenstein, K.J., Ottenstein, L.M.: The program dependence graph in a software development environment. In: SDE, pp. 177–184 (1984)
Schmid, U.: Monitoring of Distributed Real-Time Systems. Real-Time Systems 7(1), 33–56 (1994)
Thane, H., Hansson, H.: Towards Systematic Testing of Distributed Real-Time Systems. In: RTSS, pp. 360–369 (1999)
Thane, H., Sundmark, D., Huselius, J., Pettersson, A.: Replay Debugging of Real-Time Systems Using Time Machines. In: IPDPS, p. 8 (2003)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2011 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Navabpour, S., Bonakdarpour, B., Fischmeister, S. (2011). Optimal Instrumentation of Data-flow in Concurrent Data Structures. In: Fernà ndez Anta, A., Lipari, G., Roy, M. (eds) Principles of Distributed Systems. OPODIS 2011. Lecture Notes in Computer Science, vol 7109. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-25873-2_34
Download citation
DOI: https://doi.org/10.1007/978-3-642-25873-2_34
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-25872-5
Online ISBN: 978-3-642-25873-2
eBook Packages: Computer ScienceComputer Science (R0)