Symbolic Data Flow Analysis for Detecting Deadlocks in Ada Tasking Programs

  • Johann Blieberger
  • Bernd Burgstaller
  • Bernhard Scholz
Part of the Lecture Notes in Computer Science book series (LNCS, volume 1845)


It is well accepted that designing and analyzing concurrent software-components are tedious tasks. Assuring the quality of such software requires formal methods, which can statically detect deadlocks. This paper presents a symbolic data flow analysis framework for detecting deadlocks in Ada programs with tasks. The symbolic data flow framework is based on symbolic evaluation – an advanced technique to statically determine properties of programs.

The framework can guarantee the deadlock-freeness for an arbitrary hardware environment. Our approach differs from existing work in that tasks can be dynamically created and completed in the program. Examples are used to illustrate our approach.


Intermediate Node Symbolic Execution Select Statement Symbolic Evaluation Exit Node 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Blieberger, J.: Data-flow frameworks for worst-case execution time analysis, Real-Time Systems (2000) (to appear)Google Scholar
  2. 2.
    Blieberger, J., Burgstaller, B.: Symbolic reaching definitions analysis of Ada programs. In: Asplund, L. (ed.) Ada-Europe 1998. LNCS, vol. 1411, pp. 238–250. Springer, Heidelberg (1998)CrossRefGoogle Scholar
  3. 3.
    Blieberger, J., Burgstaller, B., Scholz, B.: Interprocedural Symbolic Evaluation of Ada Programs with Aliases. In: González Harbour, M., la de Puente, J.A. (eds.) Ada-Europe 1999. LNCS, vol. 1622, pp. 136–145. Springer, Heidelberg (1999)CrossRefGoogle Scholar
  4. 4.
    Blieberger, J., Fahringer, T., Scholz, B.: Symbolic cache analysis for real-time systems. Real-Time Systems, Special Issue on Worst-Case Execution Time Analysis (2000) (to appear)Google Scholar
  5. 5.
    Bruneton, E., Pradat-Peyre, J.-F.: Automatic verification of concurrent Ada programs. In: González Harbour, M., la de Puente, J.A. (eds.) Ada-Europe 1999. LNCS, vol. 1622, pp. 146–157. Springer, Heidelberg (1999)CrossRefGoogle Scholar
  6. 6.
    Cheatham, T.E., Holloway, G.H., Townley, J.A.: Symbolic evaluation and the analysis of programs. IEEE Trans. on Software Engineering 5(4), 403–417 (1979)CrossRefGoogle Scholar
  7. 7.
    Corbett, J.C.: Evaluating deadlock detection methods for concurrent software. IEEE Transactions on Software Engineering 22(3), 161–180 (1996)CrossRefGoogle Scholar
  8. 8.
    Dillon, L.K.: Using symbolic execution for verification of Ada tasking programs. ACM Transactions on Programming Languages and Systems 12(4), 643–669 (1990)CrossRefGoogle Scholar
  9. 9.
    Duesterwald, E.: Static concurrency analysis in the presence of procedures, Tech. Report #91-6, Department of Computer Science, University of Pittsburgh (1991)Google Scholar
  10. 10.
    Duesterwald, E., Soffa, M.L.: Concurrency analysis in the presence of procedures using a data-flow framework. In: Proceedings of the 4th Symp. on Testing, Analysis and Verification (TAV4), pp. 36–48Google Scholar
  11. 11.
    Duri, S., Buy, U., Devarapalli, R., Shatz, S.M.: Application and experimental evaluation of state space reduction methods for deadlock analysis in Ada. ACMTrans. on Software Engineering and Methodology 3(4), 161–180 (1994)Google Scholar
  12. 12.
    Fahringer, T., Scholz, B.: Symbolic Evaluation for Parallelizing Compilers. In: Proc. of the ACM International Conference on SupercomputingGoogle Scholar
  13. 13.
    Long, D., Clarke, L.A.: Data flow analysis of concurrent systems that use the rendezvous model of synchronization. In: Proceedings of the ACM Symp. on Testing, Analysis, and Verification, pp. 21–35Google Scholar
  14. 14.
    Masticola, S.P.: Static detection of deadlocks in polynomial time, Ph.D. thesis, Graduate School—New Brunswick, Rutgers, The State University of New Jersey (1993)Google Scholar
  15. 15.
    Masticola, S.P., Ryder, B.G.: Static infinite wait anomaly detection in polynomial time. In: Proceedings of the 1990 International Conference on Parallel Processing, pp. II78–II87 (1990)Google Scholar
  16. 16.
    Ryder, B.G., Paull, M.C.: Elimination algorithms for data flow analysis. ACM Computing Surveys 18(3), 277–315 (1986)CrossRefGoogle Scholar
  17. 17.
    Scholz, B., Blieberger, J., Fahringer, T.: Symbolic Pointer Analysis for Detecting Memory Leaks. In: ACM SIGPLAN Workshop on ”Partial Evaluation and Semantics- Based Program Manipulation (PEPM 2000), Boston (2000)Google Scholar
  18. 18.
    Stoltz, E., Srinivasan, H., Hook, J., Wolfe, M.: Static single assignment form for explicitly parallel programs: Theory and practice, Tech. report, Dept. of Computer Science and Engineering, Oregon Graduate Institute of Science and Technology, Portland, Oregon (1994)Google Scholar
  19. 19.
    Taylor, R.N.: A general-purpose algorithm for analyzing concurrent programs. Communications of the ACM 26(5), 362–376 (1983)zbMATHCrossRefGoogle Scholar
  20. 20.
    Young, M., Taylor, R.N.: Combining static concurrency analysis with symbolic execution. IEEE Trans. on Software Engineering 14(10), 1499–1511 (1988)CrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2000

Authors and Affiliations

  • Johann Blieberger
    • 1
  • Bernd Burgstaller
    • 1
  • Bernhard Scholz
    • 2
  1. 1.Department of Computer-Aided AutomationTechnical University of ViennaViennaAustria
  2. 2.Institute of Computer LanguagesTechnical University of ViennaViennaAustria

Personalised recommendations