Leveraging Abstract Interpretation for Efficient Dynamic Symbolic Execution. Alatawi, E., Søndergaard, H., & Miller, T. In Rosu, G., Di Penta, M., & Nguyen, T. N., editors, Proceedings of the 32nd ACM/IEEE International Conference on Automated Software Engineering, pages 619–624, 2017. IEEE Computing Society.
Leveraging Abstract Interpretation for Efficient Dynamic Symbolic Execution [link]Paper  doi  abstract   bibtex   
Dynamic Symbolic Execution (DSE) is a technique to automatically generate test inputs by executing the program simultaneously with concrete and symbolic values. A key challenge in DSE is scalability, as executing all feasible program paths is not possible, owing to the possibly exponential or infinite number of program paths. Loops, in particular those where the number of iterations depends on an input of the program, are a source of path explosion. They cause problems because DSE maintains symbolic values that capture only the data dependencies on symbolic inputs. This ignores control dependencies, including loop dependencies that depend indirectly on the inputs. We propose a method to increase the coverage achieved by DSE in the presence of input-data dependent loops and loop dependent branches. We combine DSE with abstract interpretation to find indirect control dependencies, including loop and branch indirect dependencies. Preliminary results show that this results in better coverage, within considerably less time compared to standard DSE.
@inproceedings{Ala-Son-Mil_ASE17,
  author    = {Eman Alatawi and 
		Harald S{\o}ndergaard and
		Tim Miller},
  title     = {Leveraging Abstract Interpretation for Efficient Dynamic 
		Symbolic Execution},
  editor    = {G. Rosu and  M. {Di Penta} and T. N. Nguyen},
  booktitle = {Proceedings of the 32nd ACM/IEEE International Conference on 
		Automated Software Engineering},
  pages     = {619--624},
  publisher = {IEEE Computing Society},
  year      = {2017},
  doi       = {10.1109/ASE.2017.8115672},
  url_Paper = {https://minerva-access.unimelb.edu.au/rest/bitstreams/7d0c6934-364c-5596-b09d-d0e55f344c13/retrieve},
  abstract  = {Dynamic Symbolic Execution (DSE) is a technique to automatically
		generate test inputs by executing the program simultaneously 
		with concrete and symbolic values. A key challenge in DSE is 
		scalability, as executing all feasible program paths is not 
		possible, owing to the possibly exponential or infinite number 
		of program paths. Loops, in particular those where the number 
		of iterations depends on an input of the program, are a source 
		of path explosion. They cause problems because DSE maintains 
		symbolic values that capture only the data dependencies on
		symbolic inputs. This ignores control dependencies, including 
		loop dependencies that depend indirectly on the inputs. We 
		propose a method to increase the coverage achieved by DSE in 
		the presence of input-data dependent loops and loop dependent 
		branches. We combine DSE with abstract interpretation to find 
		indirect control dependencies, including loop and branch 
		indirect dependencies. Preliminary results show that this 
		results in better coverage, within considerably less time 
		compared to standard DSE.},
  keywords  = {Symbolic execution, Static analysis, Abstract interpretation},
}

Downloads: 0