Journal article
Bit-precise procedure-modular termination analysis
- Abstract:
-
Non-termination is the root cause of a variety of program bugs, such as hanging programs and vulnerabilities to denial-of-service attacks. This makes an automated analysis that can prove the absence of such bugs highly desirable. To scale termination checks to large systems, an interprocedural termination analysis seems essential. This is a largely unexplored area of research in termination analysis, where most effort has focussed on small but difficult single-procedure problems.
We present a modular termination analysis for C programs using template-based interprocedural summarisation. Our analysis combines a context-sensitive, over-approximating forward analysis with the inference of under-approximating preconditions for termination. Bit-precise termination arguments are synthesised over lexicographic linear ranking function templates. Our experimental results show the advantage of interprocedural reasoning over monolithic analysis in terms of efficiency, while retaining comparable precision.
- Publication status:
- Published
- Peer review status:
- Peer reviewed
Actions
Access Document
- Files:
-
-
(Preview, Accepted manuscript, pdf, 505.5KB, Terms of use)
-
- Publisher copy:
- 10.1145/3121136
Authors
- Publisher:
- Association for Computing Machinery
- Journal:
- ACM Transactions on Programming Languages and Systems More from this journal
- Volume:
- 40
- Issue:
- 1
- Article number:
- 1
- Publication date:
- 2018-01-03
- Acceptance date:
- 2017-05-25
- DOI:
- EISSN:
-
1558-4593
- ISSN:
-
0164-0925
- Pubs id:
-
pubs:697148
- UUID:
-
uuid:cd7de2f3-92df-43b3-af8b-7fad50688894
- Local pid:
-
pubs:697148
- Source identifiers:
-
697148
- Deposit date:
-
2017-05-25
Terms of use
- Copyright holder:
- Association for Computing Machinery
- Copyright date:
- 2018
- Notes:
- © 2017 ACM. This is the accepted manuscript version of the article. The final version is available online from ACM at: 10.1145/3121136
If you are the owner of this record, you can report an update to it here: Report update to this record