Comments (7)
I find that better UB printing will be very helpful for correctly understanding counter examples; when an input program is too large, what I can do is to just guess which operation raised UB from the values of registers...
How costly will it be if we start to write a code for supporting this? What I immediately see is that there is no explicit mapping from instruction to its UB, which is needed to print the info.
from alive2.
True, vcgen can take some time. The cost is basically track another expression per statement. Instead of just value & poison, we would need store UB as well.
I would wait a bit until we merge @kevindevos' patch, since this work conflicts with his.
from alive2.
Still happens with master.
from alive2.
The root cause of this is that we don't track UB in the data-flow, only in control-flow. This is fine for translation validation, but not sufficient for standalone alive.
With -root-only
it verifies just fine, just not with the default per-register verification.
from alive2.
would it be bad to change the default to root-only, and make the other thing available as an option?
from alive2.
I don't know what the overhead would be; didn't try it out.
An alternative to store this information is to repeat symbolic execution when printing a counterexample. Instead of assuming that all functions/optimizations are wrong, we just pay a small price when they are.
The bigger challenge is how to handle undefs. That's the biggest complication.
from alive2.
If it is related with creation of a unique variable name, would it be helpful if the creation is done by alive2 rather than by Z3_mk_fresh_const?
But one concern that I have is that sometimes vcgen takes pretty long time, and printing counter examples will again take a time because it runs symbolic execution again.
For experiment, we have --succinct flag, so the cost can be hidden.
from alive2.
Related Issues (20)
- unexpected result when tgt is asm
- Implicit conversion and static analysis warnings HOT 1
- arm-tv bug that won't repro in alive-tv HOT 2
- issue with returned arguments in asm memory mode HOT 4
- issue with aligned pointers
- Source function always being UB warning may be missing HOT 3
- undesirable poison in return value HOT 1
- target-side padding for non-byte-sized loads/stores HOT 1
- missed alarm? HOT 2
- add support for range attribute in args and ret val
- Unknown command line argument '-tv' HOT 7
- Add support for poison-generating flags `nuw`/`nsw` to `trunc`
- False positive and different refined value of `zext undef` HOT 3
- Errors about unsupported instruction `invoke` HOT 4
- Load widening for higher aligned pointer incorrectly reported as undefined HOT 2
- byval arg & memory(argmem) don't work together
- Consider the new 2-phase memory model HOT 2
- Add support for pointers larger than 64 bits HOT 5
- Add support for gep's nuw nusw attributes
- bug relating to too-big store? HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from alive2.