Conversation
c7a59bc to
cfb885c
Compare
Codecov Report
Additional details and impacted files@@ Coverage Diff @@
## master #1349 +/- ##
==========================================
- Coverage 70.48% 70.04% -0.44%
==========================================
Files 154 161 +7
Lines 18870 19312 +442
Branches 4424 4610 +186
==========================================
+ Hits 13301 13528 +227
- Misses 3654 3752 +98
- Partials 1915 2032 +117
|
cfb885c to
89a3339
Compare
92c0753 to
1d4ef17
Compare
|
Any ideas what's wrong with the MacOS build? |
kren1
left a comment
There was a problem hiding this comment.
I like this and does clean up termination types nicely
|
It's currently outdated but I'd update it after the termination stuff is merged (e.g. #1465). |
2dee72b to
2ac759d
Compare
|
@ccadar @MartinNowack Ready for review. Slowly we get the puzzle pieces together... |
|
Thanks, Frank! An exciting addition, I'll try to take a look soon. |
ccadar
left a comment
There was a problem hiding this comment.
Looks great! Just a few small comments.
|
@251 I took a look, and left a few small comments. In addition to those, I think it would be really useful to add some documentation to the webpage. Let's merge this soon, it's a great addition! |
ce10f31 to
d43c1fe
Compare
8d3959e to
dbed3af
Compare
|
@ccadar Done. |
|
@251 thanks again for this useful addition. It looks fine, and it's quite modular, so let's merge it! In addition, I would like to take this opportunity to propose renaming |
danielschemmel
left a comment
There was a problem hiding this comment.
Some comments on the code
d821fa3 to
08d82bb
Compare
Introduce three different kinds of process trees:
1. Noop: does nothing (e.g. no allocations for DFS)
2. InMemory: same behaviour as before (e.g. RandomPathSearcher)
3. Persistent: similar to InMemory but writes nodes to ptree.db
and tracks information such as branch type, termination
type or source location (asm) in nodes. Enabled with
-write-ptree
ptree.db files can be analysed/plotted with the new "klee-ptree"
tool.
08d82bb to
b8c6427
Compare
We can do it independently from this PR but it should be consistent everywhere (code, docs, options). @danielschemmel |
|
Thanks for the documentation, @251 . Can you at least just rename the user-facing options ( |
I think that would be rather confusing as we have no such thing as an "etree". I'd propose to keep it for now, choose a proper name (etree, xtree, extree, ...) and than change it consistently everywhere. |
|
So what name do you suggest? I think "execution tree" (with the short form "etree") is the right terminology, as this is what we and others already use in papers. Why introduce users to the concept of ptrees if we will change it anyway? (what we have in the code is a different matter, although I agree we should be consistent and do the rename there too) |
xtree/extree/etree
There is still time to fix it properly before the next release. |
|
I still think that the best time to decide on the terminology is when we introduce it. But I understand if you don't want to spend more time on this PR, and I offer to add a commit to this branch with the renaming. Let's decide on a name: I kind of like your suggestion for XTree / xtree, should we go with that? (But I'm also happy with ETree/etree, or anything other short form for "execution tree".) |
|
I would like to suggest just using the full name |
|
Those are all great suggestions for a follow-up PR. |
|
@251 It should be as part of the same PR, but I offered to write that patch. |
|
Again, I'd do it but not as part of this PR. It makes no sense to blow this already large PR up with some unimportant naming stuff. You cannot just rename a flag and a file, you'd also have to change all the error messages, the command line switches/categories, the code comments in several tools, the documentation... It is completely unrelated and no one cared about naming for 15 years - or even the last 3 years since this PR is open. |
|
This is the first time we are introducing this to users; this is why in my opinion the key thing is the user-facing terminology, and this is all I asked for. But I agree having everything in sync is desirable. I also don't think renaming will take that long, but let me give it a try first :) |
|
I would like to break the tie on this. In general I see good arguments from all sides, so thank you for this fruitful discussion. Here are my two cents on this: The current discussion is around user-facing changes and they should be addressed eventually. But, this PR is quite old - more than 3 years and we should have managed to merge this one (quite some time) earlier. This PR is quite big as it is. Reviewing it again is quite time consuming. There have been already many change requests for this PR and it has evolved over time. In general, PRs are changing the development branch of KLEE and it's not part of a release yet. Therefore, I assume that people should be more ok with inconsistencies and breakages in a development branch. For those reasons and not to postpone further PRs that much longer, I would like to merge this as is. We can provide a more consistent experience for the end user as a follow-up PR. What are your thoughts on this? |
|
And I forgot the main important point: it provides some nice features 😄 |
|
@MartinNowack I agree with this. But since I have actually implemented the change, so I'll just push it shortly, most likely tonight. |
|
Extended with the rename in #1674 |
This PR adds 3 features:
1. "Optional" process tree
Instead of always maintaining the process tree, the tree now will only be created when it is necessary (when random-path is used or
-write-ptreeis active (see below)). Otherwise a tree stub is used that does nothing (NoopPTree).2. Introduce persistent process tree with
-write-ptreeGoing further with #1343 and #1348 this PR actually creates an SQLite database and writes the process tree and its attached information to disk.
3. New tool:
klee-ptreeThis is a proof-of-concept implementation to show various statistics, e.g. branch information and information about the termination types. It also can be used to dump the tree in .dot format to generate png/svg files. I'd recommend svg as it shows tooltips with state id, asm line, branch type, ....
Thank you for contributing to KLEE. We are looking forward to reviewing your PR. However, given the small number of active reviewers and our limited time, it might take a while to do so. We aim to get back to each PR within one month, and often do so within one week.
To help expedite the review please ensure the following, by adding an "x" for each completed item: