Proceedings

End-to-End Prediction of Buffer Overruns from Raw Source Code via Neural Memory Networks

Download BibTeX Cite

Proceedings of the Twenty-Sixth International Joint Conference on Artificial Intelligence. Main track. Pages 1546-1553.

https://doi.org/10.24963/ijcai.2017/214

Abstract

Detecting buffer overruns from a source code is one of the most common and yet challenging tasks in program analysis. Current approaches based on rigid rules and handcrafted features are limited in terms of flexible applicability and robustness due to diverse bug patterns and characteristics existing in sophisticated real-world software programs. In this paper, we propose a novel, data-driven approach that is completely end-to-end without requiring any hand-crafted features, thus free from any program language-specific structural limitations. In particular, our approach leverages a recently proposed neural network model called memory networks that have shown the state-of-the-art performances mainly in question-answering tasks. Our experimental results using source code samples demonstrate that our proposed model is capable of accurately detecting different types of buffer overruns. We also present in-depth analyses on how a memory network can learn to understand the semantics in programming languages solely from raw source codes, such as tracing variables of interest, identifying numerical values, and performing their quantitative comparisons.

  1. [Allamanis et al., 2014] Miltiadis Allamanis, Earl T. Barr, Chris- tian Bird, and Charles Sutton. Learning natural coding conven- tions. In Proceedings of the 22Nd ACM SIGSOFT International Symposium on Foundations of Software Engineering, FSE 2014, pages 281-293, New York, NY, USA, 2014. ACM.
  2. [Allamanis et al., 2016] Miltiadis Allamanis, Hao Peng, and Charles Sutton. A convolutional attention network for extreme summarization of source code. In Proceedings of The 33rd Inter- national Conference on Machine Learning (ICML 2016), pages 2091-2100, 2016.
  3. [Bhatia and Singh, 2016] Sahil Bhatia and Rishabh Singh. Auto- mated correction for syntax errors in programming assignments using recurrent neural networks. In The 2nd Indian Workshop on Machine Learning (iWML 2016), 2016.
  4. [Boland and Black, 2012] T. Boland and P. E. Black. Juliet 1.1 c/c++ and java test suite. Computer, 45(10):88-90, Oct 2012.
  5. [Cousot and Cousot, 1977] Patrick Cousot and Radhia Cousot. Ab- stract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints. In Pro- ceedings of the 4th ACM SIGACT-SIGPLAN symposium on Prin- ciples of programming languages, pages 238-252. ACM, 1977.
  6. [Dong and Lapata, 2016] Li Dong and Mirella Lapata. Language to logical form with neural attention. In Proceedings of the 54th Annual Meeting of the Association for Computational Linguistics (ACL 2016), 2016.
  7. [Graves et al., 2014] Alex Graves, Greg Wayne, and Ivo Danihelka. Neural turing machines. CoRR, abs/1410.5401, 2014.
  8. [Gu et al., 2016] Xiaodong Gu, Hongyu Zhang, Dongmei Zhang, and Sunghun Kim. Deep api learning. In Proceedings of the 2016 24th ACM SIGSOFT International Symposium on Foundations of Software Engineering (FSE 2016), pages 631-642. ACM, 2016.
  9. [Gupta et al., 2016] Rahul Gupta, Soham Pal, Aditya Kanade, and Shirish Shevade. Deepfix : Fixing common programming errors by deep learning. In 31st AAAI Conference on Artificial Intelli- gence (AAAI 2017), number Traver, 2016.
  10. [Henaff et al., 2016] Mikael Henaff, Jason Weston, Arthur Szlam, Antoine Bordes, and Yann LeCun. Tracking the world state with recurrent entity networks. In 5th International Conference on Learning Representations (ICLR 2017), 2016.
  11. [Huo et al., 2016] Xuan Huo, Ming Li, and Zhi-hua Zhou. Learn- ing unified features from natural and programming languages for locating buggy source code. In Proceedings of the 25th Interna- tional Joint Conference on Artificial Intelligence (IJCAI 2016), pages 1606-1612, 2016. IJCAI
  12. [Karpathy et al., 2015] Andrej Karpathy, Justin Johnson, and Li Fei-Fei. Visualizing and understanding recurrent networks. volume abs/1506.02078, 2015.
  13. [Kim, 2014] Yoon Kim. Convolutional neural networks for sen- tence classification. In Proceedings of the 2014 Conference on Empirical Methods in Natural Language Processing (EMNLP 2014), pages 1746-1751, 2014.
  14. [Kingma and Ba, 2014] Diederik P. Kingma and Jimmy Ba. Adam: A method for stochastic optimization. CoRR, abs/1412.6980, 2014.
  15. [Kumar et al., 2016] Ankit Kumar, Ozan Irsoy, Peter Ondruska, Mohit Iyyer, James Bradbury, Ishaan Gulrajani, Victor Zhong, Romain Paulus, and Richard Socher. Ask me anything: Dynamic memory networks for natural language processing. In Proceed- ings of The 33rd International Conference on Machine Learning (ICML 2016), pages 1378-1387, 2016.
  16. [Lam et al., 2015] An Ngoc Lam, Anh Tuan Nguyen, Hoan Anh Nguyen, and Tien N. Nguyen. Combining deep learning with information retrieval to localize buggy files for bug reports. In Proceedings -2015 30th IEEE/ACM International Conference on Automated Software Engineering (ASE 2015), pages 476-481. IEEE, 2015.
  17. [Miller et al., 2016] Alexander H. Miller, Adam Fisch, Jesse Dodge, Amir-Hossein Karimi, Antoine Bordes, and Jason We- ston. Key-value memory networks for directly reading docu- ments. CoRR, abs/1606.03126, 2016.
  18. [Nori and Sharma, 2013] Aditya V Nori and Rahul Sharma. Termi- nation proofs from tests. In Proceedings of the 2013 9th Joint Meeting on Foundations of Software Engineering, pages 246- 256. ACM, 2013.
  19. [Pu et al., 2016] Yewen Pu, Karthik Narasimhan, Armando Solar- Lezama, and Regina Barzilay. sk-p: A neural program correc- tor for moocs. In Companion Proceedings of the 2016 ACM SIGPLAN International Conference on Systems, Programming, Languages and Applications: Software for Humanity (SPLASH 2016), pages 39-40, New York, New York, USA, 2016. ACM Press.
  20. [Sankaranarayanan et al., 2008a] Sriram Sankaranarayanan, Swarat Chaudhuri, Franjo Ivančić, and Aarti Gupta. Dynamic inference of likely data preconditions over predicates by tree learning. In Proceedings of the 2008 international symposium on Software testing and analysis, pages 295-306. ACM, 2008.
  21. [Sankaranarayanan et al., 2008b] Sriram Sankaranarayanan, Franjo Ivančić, and Aarti Gupta. Mining library specifications using inductive logic programming. In Proceedings of the 30th international conference on Software engineering, pages 131-140. ACM, 2008.
  22. [Sharma et al., 2012] Rahul Sharma, Aditya V Nori, and Alex Aiken. Interpolants as classifiers. In International Conference on Computer Aided Verification, pages 71-87. Springer, 2012.
  23. [Sharma et al., 2013a] Rahul Sharma, Saurabh Gupta, Bharath Har- iharan, Alex Aiken, Percy Liang, and Aditya V Nori. A data driven approach for algebraic loop invariants. In European Sym- posium on Programming, pages 574-592. Springer, 2013.
  24. [Sharma et al., 2013b] Rahul Sharma, Saurabh Gupta, Bharath Hariharan, Alex Aiken, and Aditya V Nori. Verification as learn- ing geometric concepts. In International Static Analysis Sympo- sium, pages 388-411. Springer, 2013.
  25. [Socher et al., 2013] Richard Socher, Alex Perelygin, and Jy Wu. Recursive deep models for semantic compositionality over a sen- timent treebank. In Proceedings of the 2013 Conference on Empirical Methods in Natural Language Processing (EMNLP 2013), pages 1631-1642, 2013.
  26. [Sukhbaatar et al., 2015] Sainbayar Sukhbaatar, Arthur Szlam, Ja- son Weston, and Rob Fergus. End-to-end memory networks. In Advances in Neural Information Processing Systems 28 (NIPS 2015), pages 2440-2448, 2015.
  27. [Sutskever et al., 2014] Ilya Sutskever, Oriol Vinyals, and Quoc V Le. Sequence-to-sequence learning with neural networks. In Advances in Neural Information Processing Systems 27 (NIPS 2014), pages 3104-3112, 2014.
  28. [Weston et al., 2015a] Jason Weston, Antoine Bordes, Sumit Chopra, and Tomas Mikolov. Towards ai-complete question an- swering: A set of prerequisite toy tasks. CoRR, abs/1502.05698, 2015.
  29. [Weston et al., 2015b] Jason Weston, Sumit Chopra, and Antoine Bordes. Memory networks. In 3rd International Conference on Learning Representations (ICLR 2015), 2015.
  30. [White et al., 2015] Martin White, Christopher Vendome, Mario Linares-Vásquez, and Denys Poshyvanyk. Toward deep learn- ing software repositories. In 12th Working Conference on Mining Software Repositories (MSR 2015), pages 334-345. IEEE, 2015.

References were extracted automatically from the PDF and may contain errors.

Welcome Future Conferences AI Journal Division IJCAI Proceedings About IJCAI IJCAI Awards