Abstract
Asynchronous programming is one of the currently dominant programming techniques. The key idea of asynchronous programming is to use a queue to post computations as tasks (events). This queue is used then by the application to pick events asynchronously for processing. Asynchronous programming was found very convenient for achieving a massive percentage of software systems used today such as Gmail and Facebook which are Web 2.0 JavaScript ones.
This paper presents a novel technique for searching for nonterminating executions in asynchronous programming. The targeted cases of nontermination are those caused by the posting concept. The proposed technique is based on graphical representation for posting behaviours of asynchronous programs. Proofs for termination and correctness of the proposed method is outlined in the paper.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
References
Abe, T., Maeda, T.: Concurrent program logic for relaxed memory consistency models with dependencies across loop iterations. J. Inf. Process. 25, 244–255 (2017)
Andrews, G.R.: Concurrent Programming: Principles and Practice. Benjamin/Cummings Publishing Company, San Francisco (1991)
Brotherston, J., Bornat, R., Calcagno C.: Cyclic proofs of program termination in separation logic. In: ACM SIGPLAN Notices, vol. 43, pp. 101–112. ACM (2008)
Cantelon, M., Harter, M., Holowaychuk, T.J., Rajlich, N.: Node. js in Action. Manning, Greenwich (2014)
Chadha, G., Mahlke, S., Narayanasamy, S.: Accelerating asynchronous programs through event sneak peek. ACM SIGARCH Comput. Archit. News 43(3), 642–654 (2016)
Colón, M.A., Sipma, H.B.: Practical methods for proving program termination. In: Brinksma, E., Larsen, K.G. (eds.) CAV 2002. LNCS, vol. 2404, pp. 442–454. Springer, Heidelberg (2002). doi:10.1007/3-540-45657-0_36
Cook, B., Podelski, A., Rybalchenko, A.: Termination proofs for systems code. In: ACM SIGPLAN Notices, vol. 41, pp. 415–426. ACM (2006)
Cook, B., Podelski, A., Rybalchenko, A.: Proving program termination. Commun. ACM 54(5), 88–98 (2011)
Cousot, P.: Proving program invariance and termination by parametric abstraction, Lagrangian relaxation and semidefinite programming. In: Cousot, R. (ed.) VMCAI 2005. LNCS, vol. 3385, pp. 1–24. Springer, Heidelberg (2005). doi:10.1007/978-3-540-30579-8_1
Cristian, F.: Synchronous and asynchronous. Commun. ACM 39(4), 88–97 (1996)
El-Zawawy, M.A.: Detection of probabilistic dangling references in multi-core programs using proof-supported tools. In: Murgante, B., et al. (eds.) ICCSA 2013. LNCS, vol. 7975, pp. 516–530. Springer, Heidelberg (2013). doi:10.1007/978-3-642-39640-3_38
El-Zawawy, M.A.: An efficient layer-aware technique for developing asynchronous context-oriented software (acos). In: 2015 15th International Conference on Computational Science and Its Applications (ICCSA), pp. 14–20. IEEE (2015)
ElZawawy, M.A.: Finding divergent executions in asynchronous programs. In: Gervasi, O., et al. (eds.) International Conference on Computational Science and Its Applications. LNCS, vol. 9790, pp. 410–421. Springer, Heidelberg (2016). doi:10.1007/978-3-319-42092-9_32
El-Zawawy, M.A., Alanazi, M.N.: An efficient binary technique for trace simplifications of concurrent programs. In: 2014 IEEE 6th International Conference on Adaptive Science & Technology (ICAST), pp. 1–8. IEEE (2014)
Emmi, M., Lal, A.: Finding non-terminating executions in distributed asynchronous programs. In: Miné, A., Schmidt, D. (eds.) SAS 2012. LNCS, vol. 7460, pp. 439–455. Springer, Heidelberg (2012). doi:10.1007/978-3-642-33125-1_29
Ganty, P., Majumdar, R.: Algorithmic verification of asynchronous programs. ACM Trans. Program. Lang. Syst. (TOPLAS) 34(1), 6 (2012)
Jhala, R., Majumdar, R.: Interprocedural analysis of asynchronous programs. In: ACM SIGPLAN Notices, vol. 42, pp. 339–350. ACM (2007)
Lucia, B., Ceze, L.: Cooperative empirical failure avoidance for multithreaded programs. In: ACM SIGPLAN Notices, vol. 48, pp. 39–50. ACM (2013)
Musuvathi, M., Qadeer, S.: Iterative context bounding for systematic testing of multithreaded programs. In: ACM SIGPLAN Notices, vol. 42, pp. 446–455. ACM (2007)
Musuvathi, M., Qadeer, S., Ball, T., Basler, G., Nainar, P.A., Neamtiu, I.: Finding and reproducing Heisenbugs in concurrent programs. In: OSDI, vol. 8, pp. 267–280 (2008)
Ousterhout, J.: Why threads are a bad idea (for most purposes). In: Presentation Given at the 1996 Usenix Annual Technical Conference, vol. 5, San Diego, CA, USA (1996)
Pnueli, A., Rosner, R.: On the synthesis of an asynchronous reactive module. In: Ausiello, G., Dezani-Ciancaglini, M., Della Rocca, S.R. (eds.) ICALP 1989. LNCS, vol. 372, pp. 652–671. Springer, Heidelberg (1989). doi:10.1007/BFb0035790
Sabelfeld, A., Sands, D.: Probabilistic noninterference for multi-threaded programs. In: Proceedings of 13th IEEE Computer Security Foundations Workshop, CSFW-13, pp. 200–214. IEEE (2000)
Savage, S., Burrows, M., Nelson, G., Sobalvarro, P., Anderson, T.: Eraser: a dynamic data race detector for multithreaded programs. ACM Trans. Comput. Syst. (TOCS) 15(4), 391–411 (1997)
Sui, Y., Di, P., Xue, J.: Sparse flow-sensitive pointer analysis for multithreaded programs. In: 2016 IEEE/ACM International Symposium on Code Generation and Optimization (CGO), pp. 160–170. IEEE (2016)
Syme, D., Petricek, T., Lomov, D.: The f# asynchronous programming model. In: Rocha, R., Launchbury, J. (eds.) PADL 2011. LNCS, vol. 6539, pp. 175–189. Springer, Heidelberg (2011). doi:10.1007/978-3-642-18378-2_15
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2017 Springer International Publishing AG
About this paper
Cite this paper
El-Zawawy, M.A. (2017). Posting Graphs for Finding Non-Terminating Executions in Asynchronous Programs. In: Gervasi, O., et al. Computational Science and Its Applications – ICCSA 2017. ICCSA 2017. Lecture Notes in Computer Science(), vol 10409. Springer, Cham. https://doi.org/10.1007/978-3-319-62407-5_16
Download citation
DOI: https://doi.org/10.1007/978-3-319-62407-5_16
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-319-62406-8
Online ISBN: 978-3-319-62407-5
eBook Packages: Computer ScienceComputer Science (R0)