In D60281#1630337, @Szelethus wrote:I'll gladly add the finishing touches :)
- Queries
- All Stories
- Search
- Advanced Search
- Transactions
- Transaction Logs
Feed Advanced Search
Advanced Search
Advanced Search
Aug 24 2020
Aug 24 2020
rnkovacs added inline comments to D86446: [analyzer][docs][NFC] Document the ento namespace in the llvm/Lexicon.
Aug 24 2020, 9:33 AM · Restricted Project
Aug 14 2019
Aug 14 2019
Apr 4 2019
Apr 4 2019
Mar 26 2019
Mar 26 2019
rnkovacs added a comment to D59279: [Analyzer] Checker for non-determinism caused by iteration of unordered container of pointers.
In D59279#1438514, @mgrang wrote:Yes, the reason we limit the checks only to unordered containers is to reduce the false positive rate. Although, as you rightly pointed out that ordered sets of pointers are as non-deterministic as unordered ones. Once our checks have the capability to detect what happens inside the loop maybe we can add ordered sets too. I will add this to the TODO. Thanks.
rnkovacs added inline comments to D59195: [analyzer] Remove the default value arg from getChecker*Option.
Mar 21 2019
Mar 21 2019
rnkovacs added a comment to D59279: [Analyzer] Checker for non-determinism caused by iteration of unordered container of pointers.
In D59279#1427017, @mgrang wrote:Following are the assumptions/limitations of this patch:
1. The assumption is that iteration of ordered containers of pointers is not non-deterministic.
Nov 2 2018
Nov 2 2018
In D53856#1280408, @Szelethus wrote:In D53856#1279887, @NoQ wrote:This might be also covered by @rnkovacs's string buffer escape checker - either already or eventually, it'll become just yet another string view API that the checker supports.
I thought about that too, adding some StringRef specific information to that checker makes more sense then essentially duplicating the logic. However, what @MTC mentioned about ArrayRef<T> would be a neat addition too, and maybe it isn't worth making InnerPointerChecker that general.
@rnkovacs, any thoughts?
Oct 10 2018
Oct 10 2018
Aug 28 2018
Aug 28 2018
Return value of dyn_cast_or_null should be checked before use. Otherwise we may put a null pointer into the map as a key and eventually crash in checkDeadSymbols.
Aug 21 2018
Aug 21 2018
In D48027#1203944, @MTC wrote:However this approach has limit. Given the code below, we cannot distinguish whether the basic_string is user-defined struct or namespace. That's means when the user provide {"std", "basic_string", "append"}, we can only know the qualified name of the call sequentially contains std, basic_string, append. We don't know if these names come from RecordDecl or NamespaceDecl.
namespace std { namespace basic_string { struct A { void append() {} }; } } void foo() { std::basic_string::A a; a.append(); // Match }@rnkovacs What do you think? Can this approach meet InnerPointerChecker's needs?
Aug 10 2018
Aug 10 2018
rnkovacs retitled D49570: [analyzer] Improve warning messages and notes of InnerPointerChecker from [analyzer] Improve warning messages and notes of DanglingInternalBufferChecker to [analyzer] Improve warning messages and notes of InnerPointerChecker.
rnkovacs added inline comments to D49570: [analyzer] Improve warning messages and notes of InnerPointerChecker.
rnkovacs updated the diff for D49570: [analyzer] Improve warning messages and notes of InnerPointerChecker.
Address comments & rebase.
Aug 6 2018
Aug 6 2018
In D50211#1190146, @NoQ wrote:Welcome to the club!
Committed in r339067, I just messed up the revision-closing line in the commit message.
Aug 5 2018
Aug 5 2018
rnkovacs updated the diff for D50211: [analyzer] Fix displayed checker name for InnerPointerChecker.
Replace empty Optionals with Nones.
Aug 3 2018
Aug 3 2018
In D50211#1186630, @NoQ wrote:I see, so that's how it's done!
I also noticed that checker name was weird in exploded graph dumps, i.e. it was showing regular new/delete stuff as if it was done by InnerPointer checker. I'll check if this is fixed tomorrow.
Aug 2 2018
Aug 2 2018
Aug 1 2018
Aug 1 2018
rnkovacs updated the diff for D49361: [analyzer] Detect pointers escaped after return statement execution in MallocChecker.
Add helper function to be used in both callbacks.
In D49811#1175726, @NoQ wrote:I guess you could write a test with debug.AnalysisOrder (by making its checkEndFunction callback (that you'll have to define) print different things depending on the return statement), not sure if it's worth it; you can also merge this commit with D49361 instead.
Jul 30 2018
Jul 30 2018
Rebase.
rnkovacs updated the diff for D49361: [analyzer] Detect pointers escaped after return statement execution in MallocChecker.
De-duplicate & add comment.
Jul 27 2018
Jul 27 2018
rnkovacs added inline comments to D49656: [analyzer] Add support for more pointer invalidating functions in InnerPointerChecker.
Jul 25 2018
Jul 25 2018
rnkovacs updated the diff for D49361: [analyzer] Detect pointers escaped after return statement execution in MallocChecker.
Updated to use the extended checkEndFunction() callback (committed in rL337215 - I forgot to add it as a dependency).
I'm not sure how to test this.
I'll need it in D49361 when I update it to use the changed checkEndFunction() callback, and that will kind of test this too.
rnkovacs added inline comments to D49656: [analyzer] Add support for more pointer invalidating functions in InnerPointerChecker.
rnkovacs updated the diff for D49656: [analyzer] Add support for more pointer invalidating functions in InnerPointerChecker.
Tiny bit more re-structuring.
rnkovacs added inline comments to D49656: [analyzer] Add support for more pointer invalidating functions in InnerPointerChecker.
rnkovacs updated the diff for D49656: [analyzer] Add support for more pointer invalidating functions in InnerPointerChecker.
Fix note for function pointers & handle argument counting in member operator calls.
I also refactored the code a little, because after moving things from checkPreCall to checkPostCall, the structure was a bit confusing.
Jul 23 2018
Jul 23 2018
rnkovacs added inline comments to D49656: [analyzer] Add support for more pointer invalidating functions in InnerPointerChecker.
rnkovacs updated the diff for D49656: [analyzer] Add support for more pointer invalidating functions in InnerPointerChecker.
Addressed comments & added two test cases for function pointers.
Jul 22 2018
Jul 22 2018
Jul 19 2018
Jul 19 2018
Jul 18 2018
Jul 18 2018
Two more reports on Ceph that seem to be true positives (no other reports from this checker):
Jul 17 2018
Jul 17 2018
rnkovacs added inline comments to D49360: [analyzer] Add support for more basic_string API in DanglingInternalBufferChecker.
rnkovacs updated the diff for D49360: [analyzer] Add support for more basic_string API in DanglingInternalBufferChecker.
Note messages updated.
Jul 16 2018
Jul 16 2018
rnkovacs added a comment to D49360: [analyzer] Add support for more basic_string API in DanglingInternalBufferChecker.
In D49360#1163113, @NoQ wrote:Also we rarely commit to adding a test for every single supported API function; bonus points for that, but usually 2-3 functions from a series of similar functions is enough :)
rnkovacs updated the diff for D49360: [analyzer] Add support for more basic_string API in DanglingInternalBufferChecker.
Added standard quote, marking the section about non-member functions that may also invalidate the buffer as a TODO.
Also changed the note message to that suggested by @NoQ (thanks!). All tests pass now.
In D49058#1159533, @george.karpenkov wrote:@rnkovacs Do you have evaluation statistics handy for this checker? How many bugs it finds, on which projects? How many of those are real bugs?
Jul 15 2018
Jul 15 2018
Jul 10 2018
Jul 10 2018
Fix test run line.
Jul 9 2018
Jul 9 2018
rnkovacs added inline comments to D49057: [analyzer] Track multiple raw pointer symbols in DanglingInternalBufferChecker.
rnkovacs updated the diff for D49057: [analyzer] Track multiple raw pointer symbols in DanglingInternalBufferChecker.
Thanks very much for your review!
Jul 8 2018
Jul 8 2018
rnkovacs added inline comments to D49057: [analyzer] Track multiple raw pointer symbols in DanglingInternalBufferChecker.
rnkovacs added inline comments to D49057: [analyzer] Track multiple raw pointer symbols in DanglingInternalBufferChecker.
rnkovacs updated the diff for D49057: [analyzer] Track multiple raw pointer symbols in DanglingInternalBufferChecker.
Addressed comments.
Jul 7 2018
Jul 7 2018
rnkovacs added a comment to D48521: [analyzer] Highlight container object destruction in MallocChecker.
No crashes on Harfbuzz, ICU, Bitcoin, and LLVM. I'll commit.
Jun 25 2018
Jun 25 2018
rnkovacs added inline comments to D48532: [analyzer] Add support for std::basic_string::data() in DanglingInternalBufferChecker.
rnkovacs updated the diff for D48522: [analyzer] Highlight c_str() call in DanglingInternalBuffer checker.
Fixed the constness of c_str() in the test file.
rnkovacs updated the diff for D48522: [analyzer] Highlight c_str() call in DanglingInternalBuffer checker.
Fixed variable name inside the visitor.
I also clang-formatted the file, sorry for any line number shifting.
Jun 24 2018
Jun 24 2018
rnkovacs updated the diff for D48522: [analyzer] Highlight c_str() call in DanglingInternalBuffer checker.
Thanks! Addressed comments.
rnkovacs updated the diff for D48521: [analyzer] Highlight container object destruction in MallocChecker.
Thanks for the comments!
I'll run this on some projects and see if any assertions fail.
Jun 23 2018
Jun 23 2018
rnkovacs updated the diff for D48522: [analyzer] Highlight c_str() call in DanglingInternalBuffer checker.
Um, sorry, I totally forgot about that. Added your case to the tests.
Jun 9 2018
Jun 9 2018
rnkovacs updated the diff for D47416: [analyzer] Clean up the program state map of DanglingInternalBufferChecker.
Addressed comments.
rnkovacs updated the diff for D47416: [analyzer] Clean up the program state map of DanglingInternalBufferChecker.
Fixed naming and added an extra pass for regions left behind by incomplete destructors.
May 31 2018
May 31 2018
In D45517#1117898, @mikhail.ramalho wrote:Just want to comment here and give thanks again for the first version of
the refutation code. It's being really helpful to develop the approach this
code as a base; things would definitely be slower if I had to start it from
scratch.
May 29 2018
May 29 2018
May 28 2018
May 28 2018
rnkovacs updated the diff for D47135: [analyzer] A checker for dangling internal buffer pointers in C++.
Added a check for UnknownVal and two FIXMEs (one for the OriginExpr and one for the new CheckKind).
May 26 2018
May 26 2018
rnkovacs added inline comments to D47135: [analyzer] A checker for dangling internal buffer pointers in C++.
rnkovacs updated the diff for D47135: [analyzer] A checker for dangling internal buffer pointers in C++.
Address (most) comments.
rnkovacs updated the diff for D47135: [analyzer] A checker for dangling internal buffer pointers in C++.
- All basic_string types are now supported.
- Mock tests added.
- New AllocationFamily AF_InternalBuffer introduced.
- NewDeleteChecker dependency added.
May 22 2018
May 22 2018
rnkovacs added a comment to D47135: [analyzer] A checker for dangling internal buffer pointers in C++.
Thanks for your comments!
May 21 2018
May 21 2018
rnkovacs added a comment to D47135: [analyzer] A checker for dangling internal buffer pointers in C++.
Adding a preliminary test file.
rnkovacs updated the summary of D47135: [analyzer] A checker for dangling internal buffer pointers in C++.
May 8 2018
May 8 2018
Expression chaining is fixed. The visitor now collects constraints that are about to disappear along the bug path and checks them once in the end.
Apr 21 2018
Apr 21 2018
In D45517#1074057, @NoQ wrote:The visitor currently checks states appearing as block edges in the exploded graph. The first idea was to filter states based on the shape of the exploded graph, by checking the number of successors of the parent node, but surprisingly, both succ_size() and pred_size() seemed to return 1 for each node in the graph (except for the root), even if there clearly were branchings in the code (and on the .dot picture). To my understanding, the exploded graph is fully constructed at the stage where visitors are run, so I must be missing something.
Aha, yep, that's probably because visitors are operating on the "trimmed" exploded graph. You can paint it via the -trim-egraph flag or by calling ViewGraph(1) in the debugger.
Apr 20 2018
Apr 20 2018
Fixed logical operator in the Z3ConstraintManager::checkRangedStateConstraints() function.
Apr 11 2018
Apr 11 2018
Jan 15 2018
Jan 15 2018
Jan 11 2018
Jan 11 2018
I extended the warning message to include more information. What do you think?
Jan 9 2018
Jan 9 2018
In D41816#970845, @xazax.hun wrote:Overall looks good to me, one comment inline. I think it is good to have these checks to prevent the analyzer executing undefined behavior. Maybe this would make it more feasible to run the analyzer with ubsan :)
In the future, it would be great to also look for these cases symbolically, but I believe it is perfectly fine to have that in a separate patch.
Jan 8 2018
Jan 8 2018
Sep 21 2017
Sep 21 2017
In D35796#878200, @dcoughlin wrote:This looks good to me! Do you have commit access, or do you need someone to commit it for you?
Sep 20 2017
Sep 20 2017
- Accidentally left-in comment removed.
- Checker file clang-formatted.
Sep 14 2017
Sep 14 2017
Sorry for the late reply. I did run it on a few open-source projects as well as LLVM/Clang and honestly it didn't find anything. As the test cases seem to work fine it might already be in a state ready to bring out of alpha.
Aug 10 2017
Aug 10 2017
Thanks for the comments. I improved the docs and truncated the messages in the test file.
Aug 10 2017, 2:32 AM · Restricted Project