2013 20th IEEE International Conference and Workshops on Engineering of Computer Based Systems (ECBS) 2013
DOI: 10.1109/ecbs.2013.15
|View full text |Cite
|
Sign up to set email alerts
|

SMT-Based Bounded Model Checking of C++ Programs

Abstract: Abstract-Bounded model checking of C++ programs presents greater challenges than that of C programs due to the more complex features that the language offers, such as templates, containers, and exception handling. We present ESBMC++, a bounded model checker for C++ programs. It is based on an operational model, an abstract representation of the standard C++ libraries that conservatively approximates their semantics. ESBMC++ uses this to encode the verification conditions using different background theories sup… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
1
1
1

Citation Types

3
44
0
2

Year Published

2016
2016
2023
2023

Publication Types

Select...
5
1
1

Relationship

1
6

Authors

Journals

citations
Cited by 27 publications
(49 citation statements)
references
References 17 publications
3
44
0
2
Order By: Relevance
“…As GPUVerify, PUG does not verify main functions and this explains most unsupported cases (31), while others are explained by the lack of support to __syncthreads function (12), function pointers (9), and the curand.h library (7); additionally, PUG does not support the use of unsigned type modifier as argument to the function atomi-cAdd (6); changes in variables stored in constant memory (3), and inability to handle structs (2), variables with __device__ qualifier (2), and size_t type (1), in addition to other cases that PUG aborted by returning a false null pointer access (7) or because it did not recognize the NULL identifier (2). As GPUVerify, PUG does not verify main functions and this explains most unsupported cases (31), while others are explained by the lack of support to __syncthreads function (12), function pointers (9), and the curand.h library (7); additionally, PUG does not support the use of unsigned type modifier as argument to the function atomi-cAdd (6); changes in variables stored in constant memory (3), and inability to handle structs (2), variables with __device__ qualifier (2), and size_t type (1), in addition to other cases that PUG aborted by returning a false null pointer access (7) or because it did not recognize the NULL identifier (2).…”
Section: Resultsmentioning
confidence: 99%
See 2 more Smart Citations
“…As GPUVerify, PUG does not verify main functions and this explains most unsupported cases (31), while others are explained by the lack of support to __syncthreads function (12), function pointers (9), and the curand.h library (7); additionally, PUG does not support the use of unsigned type modifier as argument to the function atomi-cAdd (6); changes in variables stored in constant memory (3), and inability to handle structs (2), variables with __device__ qualifier (2), and size_t type (1), in addition to other cases that PUG aborted by returning a false null pointer access (7) or because it did not recognize the NULL identifier (2). As GPUVerify, PUG does not verify main functions and this explains most unsupported cases (31), while others are explained by the lack of support to __syncthreads function (12), function pointers (9), and the curand.h library (7); additionally, PUG does not support the use of unsigned type modifier as argument to the function atomi-cAdd (6); changes in variables stored in constant memory (3), and inability to handle structs (2), variables with __device__ qualifier (2), and size_t type (1), in addition to other cases that PUG aborted by returning a false null pointer access (7) or because it did not recognize the NULL identifier (2).…”
Section: Resultsmentioning
confidence: 99%
“…GKLEE generated 7 false incorrect results, which are caused by incorrectly detected assertions (4), data-races (1), array out-of-bounds (1) and solver call failure (1). GPUVerify generated eight false incorrect results, due to incorrectly detected assertion (2) and data-races (6). PUG produces 11 false incorrect results due to data races incorrectly detected.…”
Section: Resultsmentioning
confidence: 99%
See 1 more Smart Citation
“…(RP1) Cordeiro, Fischer, and Marques-Silva proposed the first SMT-based BMC for full C programs, called Efficient SMT-Based Context-Bounded Model Checker (ESBMC) [17], which was later extended to support C++98 programs [36], CUDA programs [37], and Qt-based consumer electronics applications [38]. This approach was also able to find undiscovered bugs related to arithmetic overflow, buffer overflow, and invalid pointer, in standard benchmarks, which were later confirmed by the benchmarks' creators (e.g., NOKIA, NEC, NXP, and VERISEC) [15,17].…”
Section: Current Achievements and Future Trendsmentioning
confidence: 99%
“…In Ramalho et al (2013) it presents a bounded model checker for C++ programs, which is an evolution of dealing with C programs, and Cordeiro et al (2012) use ESBMC for embedded ANSI-C software. In , and it was proven that it is possible to use ESBMC to solve HW-SW partitioning in a single-and multi-core way, but the former has performance issues that were improved by the latter, which used only a sequential search to perform multi-core model checking.…”
Section: Introductionmentioning
confidence: 99%