Improving impact of self-adaptation and self-management research through evaluation methodology
Proceedings of the 2010 ICSE Workshop on Software Engineering for Adaptive and Self-Managing Systems
Using run time traces in automated programming tutoring
Proceedings of the 16th annual joint conference on Innovation and technology in computer science education
Detecting and escaping infinite loops with jolt
Proceedings of the 25th European conference on Object-oriented programming
SAFERPHP: finding semantic vulnerabilities in PHP applications
Proceedings of the ACM SIGPLAN 6th Workshop on Programming Languages and Analysis for Security
Using invariant relations in the termination analysis of while loops
Proceedings of the 34th International Conference on Software Engineering
Bolt: on-demand infinite loop escape in unmodified binaries
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Adaptively identifying non-terminating code when testing student programs
Proceedings of the 45th ACM technical symposium on Computer science education
Verifying while loops with invariant relations
International Journal of Critical Computer-Based Systems
Hi-index | 0.00 |
When a running program becomes unresponsive, it is often impossible for a user to determine if the program is performing some useful computation or if it has entered an infinite loop. We present LOOPER, an automated technique for dynamically analyzing a running program to prove that it is non-terminating. LOOPER uses symbolic execution to produce simple non-termination arguments for infinite loops dependent on both program values and the shape of heap. The constructed arguments are verified with an off-the-shelf SMT solver. We have implemented our technique in a prototype tool for Java applications, and we demonstrate our technique’s effectiveness on several non-terminating benchmarks, including a reported infinite loop bug in open-source text editor jEdit. Our tool is able to dynamically detect infinite loops deep in the execution of large Java programs with no false warnings, producing symbolic arguments that can aid in debugging non-termination.