Page MenuHomePhabricator

NoQ (Artem Dergachev)
User

Projects

User does not belong to any projects.

User Details

User Since
Sep 3 2015, 9:16 AM (180 w, 6 d)

Recent Activity

Yesterday

NoQ updated the diff for D58397: [analyzer] MIGChecker: Pour more data into the checker..

Rebase. Fix behavior when the return code is not constrained enough. Test the C++11 attribute syntax (just in case). Update comments.

Tue, Feb 19, 7:49 PM · Restricted Project
NoQ updated the diff for D58392: [analyzer] MIGChecker: Fix false negatives for releases in automatic destructors..

Rebase.

Tue, Feb 19, 7:44 PM · Restricted Project
NoQ updated the diff for D58368: [analyzer] MIGChecker: Implement bug reporter visitors..

Rebase.

Tue, Feb 19, 7:43 PM · Restricted Project
NoQ updated the diff for D58366: [analyzer] MIGChecker: Make use of the server routine annotation..

Whoops - make sure that the Objective-C test does actually test something.

Tue, Feb 19, 7:42 PM · Restricted Project
NoQ updated the diff for D58366: [analyzer] MIGChecker: Make use of the server routine annotation..

Rebase due to an update in D58365 - namely, add support for Objective-C messages and blocks that are now allowed to wear the attribute.

Tue, Feb 19, 7:33 PM · Restricted Project
NoQ added inline comments to D58365: [attributes] Add a MIG server routine attribute..
Tue, Feb 19, 7:28 PM · Restricted Project
NoQ updated the diff for D58365: [attributes] Add a MIG server routine attribute..

Fxd, thx!

Tue, Feb 19, 7:28 PM · Restricted Project
NoQ updated the diff for D57558: [analyzer] MIGChecker: A checker for Mach Interface Generator calling convention..

Add a test that demonstrates that we correctly handle unknown or under-constrained return values. I.e., it would fail if we replace

!State->isNonNull(V).isConstrainedTrue()

with

!State->isNonNull(V).isConstrainedTrue()
Tue, Feb 19, 7:26 PM · Restricted Project
NoQ added a comment to D53076: [analyzer] Enhance ConditionBRVisitor to write out more information.

I'll take a closer look in a few days, sorry for the delays! The progress you're making is fantastic and i really appreciate your work, but i have an urgent piece of work of my own to deal with this week.

Tue, Feb 19, 7:01 PM · Restricted Project
NoQ added a reviewer for D58367: [analyzer] NFC: Improve upon the concept of BugReporterVisitor.: Charusso.
  1. I guess most of the visitors could be changed to this format, do you have plans to convert them? I'll happily land a hand, because it sounds like a big chore. I guess that would also test this implementation fairly well.
Tue, Feb 19, 1:07 PM · Restricted Project
NoQ added a parent revision for D58397: [analyzer] MIGChecker: Pour more data into the checker.: D58392: [analyzer] MIGChecker: Fix false negatives for releases in automatic destructors..
Tue, Feb 19, 11:23 AM · Restricted Project
NoQ added a child revision for D58392: [analyzer] MIGChecker: Fix false negatives for releases in automatic destructors.: D58397: [analyzer] MIGChecker: Pour more data into the checker..
Tue, Feb 19, 11:23 AM · Restricted Project
NoQ added inline comments to D58365: [attributes] Add a MIG server routine attribute..
Tue, Feb 19, 11:23 AM · Restricted Project
NoQ created D58397: [analyzer] MIGChecker: Pour more data into the checker..
Tue, Feb 19, 11:21 AM · Restricted Project
NoQ updated the summary of D58392: [analyzer] MIGChecker: Fix false negatives for releases in automatic destructors..
Tue, Feb 19, 10:58 AM · Restricted Project
NoQ added a parent revision for D58392: [analyzer] MIGChecker: Fix false negatives for releases in automatic destructors.: D58368: [analyzer] MIGChecker: Implement bug reporter visitors..
Tue, Feb 19, 10:47 AM · Restricted Project
NoQ added a child revision for D58368: [analyzer] MIGChecker: Implement bug reporter visitors.: D58392: [analyzer] MIGChecker: Fix false negatives for releases in automatic destructors..
Tue, Feb 19, 10:47 AM · Restricted Project
NoQ created D58392: [analyzer] MIGChecker: Fix false negatives for releases in automatic destructors..
Tue, Feb 19, 10:47 AM · Restricted Project

Mon, Feb 18

NoQ added a parent revision for D58368: [analyzer] MIGChecker: Implement bug reporter visitors.: D58366: [analyzer] MIGChecker: Make use of the server routine annotation..
Mon, Feb 18, 9:10 PM · Restricted Project
NoQ added a child revision for D58366: [analyzer] MIGChecker: Make use of the server routine annotation.: D58368: [analyzer] MIGChecker: Implement bug reporter visitors..
Mon, Feb 18, 9:09 PM · Restricted Project
NoQ added a parent revision for D58368: [analyzer] MIGChecker: Implement bug reporter visitors.: D58367: [analyzer] NFC: Improve upon the concept of BugReporterVisitor..
Mon, Feb 18, 9:09 PM · Restricted Project
NoQ added a child revision for D58367: [analyzer] NFC: Improve upon the concept of BugReporterVisitor.: D58368: [analyzer] MIGChecker: Implement bug reporter visitors..
Mon, Feb 18, 9:09 PM · Restricted Project
NoQ created D58368: [analyzer] MIGChecker: Implement bug reporter visitors..
Mon, Feb 18, 9:09 PM · Restricted Project
NoQ created D58367: [analyzer] NFC: Improve upon the concept of BugReporterVisitor..
Mon, Feb 18, 9:05 PM · Restricted Project
NoQ added a parent revision for D58366: [analyzer] MIGChecker: Make use of the server routine annotation.: D57558: [analyzer] MIGChecker: A checker for Mach Interface Generator calling convention..
Mon, Feb 18, 8:38 PM · Restricted Project
NoQ added a child revision for D57558: [analyzer] MIGChecker: A checker for Mach Interface Generator calling convention.: D58366: [analyzer] MIGChecker: Make use of the server routine annotation..
Mon, Feb 18, 8:38 PM · Restricted Project
NoQ added a child revision for D58365: [attributes] Add a MIG server routine attribute.: D58366: [analyzer] MIGChecker: Make use of the server routine annotation..
Mon, Feb 18, 8:38 PM · Restricted Project
NoQ added a parent revision for D58366: [analyzer] MIGChecker: Make use of the server routine annotation.: D58365: [attributes] Add a MIG server routine attribute..
Mon, Feb 18, 8:38 PM · Restricted Project
NoQ created D58366: [analyzer] MIGChecker: Make use of the server routine annotation..
Mon, Feb 18, 8:37 PM · Restricted Project
NoQ created D58365: [attributes] Add a MIG server routine attribute..
Mon, Feb 18, 8:34 PM · Restricted Project
NoQ updated the diff for D57558: [analyzer] MIGChecker: A checker for Mach Interface Generator calling convention..

Clean up a bit. Fix kern_return_t accidentally defined as unsigned. Expand one comment.

Mon, Feb 18, 8:27 PM · Restricted Project

Sun, Feb 17

NoQ added a comment to D58065: [analyzer] Document the frontend library.

I've also wasted my second weekend trying to make Static Analyzer unit tests run under check-clang-analysis

:) I tried to have a quick look but got confused pretty quickly.

Sun, Feb 17, 9:05 PM · Restricted Project

Fri, Feb 15

NoQ added inline comments to D57850: [analyzer] Emit an error rather than assert on invalid checker option input.
Fri, Feb 15, 6:19 PM · Restricted Project
NoQ added a comment to D58121: [analyzer][WIP] Attempt to fix traversing bindings of non-base regions in ClusterAnalysis.

After staring at this for an hour or two, i didn't manage to force myself to understand how our cluster analysis works here, but i totally agree that it's most likely broken; i guess, we should eventually move away from the idea that everything works through base regions, but for now this idea seems to be hardcoded in a lot of places.

Fri, Feb 15, 5:50 PM · Restricted Project
NoQ added a comment to D58065: [analyzer] Document the frontend library.

Had a look. Great stuff, just as planned :) Old fanboy wisdom: Try to avoid documenting bugs you want to fix! But i don't have many high-level comments here - only appreciation of the effort.

Fri, Feb 15, 4:53 PM · Restricted Project
NoQ accepted D57579: [analyzer][WIP] Enable subcheckers to possess checker options.

since I couldn't reproduce the error

Fri, Feb 15, 3:59 PM · Restricted Project

Mon, Feb 11

NoQ added a comment to D58069: [Sema] Mark GNU compound literal array init as an rvalue..

The analyzer test change maybe indicates we could simplify the analyzer code a little with this fix? Apparently a hack was added to support lvalues in initializers in r315750, but I'm not really familiar with the relevant code.

Mon, Feb 11, 3:07 PM · Restricted Project
NoQ added a comment to D57890: [analyzer] Fix in self assignment checker.

Sounds reasonable, but it also sounds like something that should be reproducible on the upstream clang. Do you have a code snippet that causes the problematic AST to appear? Even if we don't have the false positive up here in upstream, Is it something we can test via -analyzer-display-progress | FileCheck or with the help of the analysis order checker or something like that?

Mon, Feb 11, 2:04 PM · Restricted Project
NoQ accepted D58067: [Analyzer] Crash fix for FindLastStoreBRVisitor.

We should eventually remove operator==() from the SVal class because it doesn't do anything you'd possibly imagine it to do. However we do need to come up with adequate alternatives. And by looking at this patch, it seems that we actually need two alternatives:

  1. An attempt to figure out that two SVals are equal. The result of such comparison is state-specific - eg., ($a == $b) may be true in states that follow the true-branch of "if (a == b)" and false otherwise. This is how evalBinOp(BO_EQ) should behave. And this sounds impossible to implement without a perfect constraint solver, so the user should always be prepared to receive an unknown answer in some cases.
  2. An attempt to figure out if two SVals are representing the same value, that is, you cannot replace one value with another without an assignment. This is what we need in this patch. Eg., in
int a;
int b;
Mon, Feb 11, 1:54 PM · Restricted Project

Fri, Feb 8

NoQ accepted D57860: [analyzer] Validate checker option names and values.

(already in the works!) Document the frontend of the analyzer, sneak peak here.

Fri, Feb 8, 6:29 PM · Restricted Project
NoQ accepted D57858: [analyzer] Add a new frontend flag to display all checker options.

I think this is awesome!

Fri, Feb 8, 6:26 PM · Restricted Project
NoQ accepted D57850: [analyzer] Emit an error rather than assert on invalid checker option input.

Looks cool, thanks!!

Fri, Feb 8, 6:22 PM · Restricted Project
NoQ created D57981: [analyzer] strlcat() syntax check: Fix an off-by-one error..
Fri, Feb 8, 3:01 PM · Restricted Project, Restricted Project

Thu, Feb 7

NoQ added a comment to D57230: [analyzer] Toning down invalidation a bit.

That's the one:

Thu, Feb 7, 3:11 PM · Restricted Project, Restricted Project

Wed, Feb 6

NoQ added a comment to D57230: [analyzer] Toning down invalidation a bit.

There seem to be a few regressions - weird memory leaks of inner objects in C++ destructors. Trying to investigate/reproduce.

Wed, Feb 6, 2:34 PM · Restricted Project, Restricted Project

Tue, Feb 5

NoQ accepted D57783: [analyzer] [testing] Inside CmpRuns.py output also print the filename of the first item in the path.

Yay, thanks! Looks useful.

Tue, Feb 5, 1:53 PM · Restricted Project
NoQ accepted D57782: [analyzer] [RetainCountChecker] Bugfix: in non-OSObject-mode, do not track CXX method calls.
Tue, Feb 5, 1:51 PM · Restricted Project
NoQ accepted D57721: [analyzer] Document RetainCountChecker behavior and annotations.

This was a good read for me.

Tue, Feb 5, 1:35 PM · Restricted Project
Herald added a project to D57230: [analyzer] Toning down invalidation a bit: Restricted Project.

Hmm. writes_to_superobject?

Tue, Feb 5, 11:47 AM · Restricted Project, Restricted Project

Mon, Feb 4

NoQ added a comment to D54429: [analyzer] Creating standard Sphinx documentation.

Dunno but made a random guess in the inline comment.

Mon, Feb 4, 5:35 PM · Restricted Project

Fri, Feb 1

NoQ added a comment to D46421: [analyzer][CrossTU] Extend CTU to VarDecls with initializer.

Fxd the global variable problem in D57619, thanks! I think you should change back to getInit() once D57619 lands.

Fri, Feb 1, 2:24 PM · Restricted Project
NoQ created D57619: [analyzer] Canonicalize variable declarations in VarRegion objects..
Fri, Feb 1, 2:23 PM · Restricted Project, Restricted Project

Thu, Jan 31

NoQ added inline comments to D53076: [analyzer] Enhance ConditionBRVisitor to write out more information.
Thu, Jan 31, 7:30 PM · Restricted Project
NoQ added a comment to D57410: [analyzer] Add support to unknown condition evaluations in the ConditionBRVisitor.

These new notes are fantastic, we totally need them :) Changes in edges-new.mm and dtors.cpp look like a regression, i guess one of us would have to investigate it - feel free to start and poke me if it turns out to be hard, because i really appreciate where this is going!

Thu, Jan 31, 7:10 PM · Restricted Project
NoQ updated the summary of D57558: [analyzer] MIGChecker: A checker for Mach Interface Generator calling convention..
Thu, Jan 31, 5:41 PM · Restricted Project
NoQ accepted D57557: [analyzer] [RetainCountChecker] Fix object type for CF/Obj-C bridged casts.

Thx!

Thu, Jan 31, 5:39 PM · Restricted Project
NoQ created D57558: [analyzer] MIGChecker: A checker for Mach Interface Generator calling convention..
Thu, Jan 31, 5:38 PM · Restricted Project
NoQ created D57554: [analyzer] Revert D51397 "Remove the "postponed" hack..."..
Thu, Jan 31, 4:28 PM · Restricted Project, Restricted Project
NoQ added a comment to D54429: [analyzer] Creating standard Sphinx documentation.

P.S. I also support the idea to have a separate page per checker. It encourages people to write as much documentation as necessary and continously expand it. Otherwise there's a perception that all docs need to be roughly of the same size and shape in order to make the page look consistent and not too cluttered.

Thu, Jan 31, 2:11 PM · Restricted Project
NoQ accepted D54429: [analyzer] Creating standard Sphinx documentation.

I think let's get this up and running and slowly redirect links from the front page to the new docs until only the front page is left?

Thu, Jan 31, 12:32 PM · Restricted Project

Wed, Jan 30

NoQ added inline comments to D51397: [analyzer] Remove the "postponed" hack, deal with derived symbols using an extra map.
Wed, Jan 30, 3:33 PM

Tue, Jan 29

NoQ accepted D57433: [analyzer] [RetainCountChecker] Bugfix for tracking top-level parameters of Objective-C methods.

I like AnyCall.

Tue, Jan 29, 6:06 PM
NoQ added a comment to D55734: [analyzer] Revise GenericTaintChecker's internal representation.

Hmm, the diff is a mixture of D54918 and this patch. I'll apply it by reverting D54918 locally and then applying this diff, but please let us know if you accidentally uploaded a wrong diff!

Tue, Jan 29, 4:07 PM

Mon, Jan 28

NoQ added a comment to D57356: [analyzer] [RetainCountChecker] Track input parameters to the top-level function.

I just fail to understand why nobody did that before. As far as i understand, that's a very large improvement.

I think because it required D57346 and all the AnyCall machinery.

Mon, Jan 28, 5:40 PM
NoQ added a comment to D54811: [analyzer] Remove GDM checking from the ConditionBRVisitor.

Ok! I'll try to evaluate it and see if i an example of improvement shows up - this would probably be easier than to come up with one manually.

Mon, Jan 28, 5:27 PM · Restricted Project
NoQ added a comment to D46421: [analyzer][CrossTU] Extend CTU to VarDecls with initializer.

In my old version I seemed to get away with the tests, but they failed after rebasing. It seems like earlier there was only a single VarDecl for the imported ones with InitExpr. Now after importing there is one without init and a redecl with the init. This is why I changed getInit() in RegionStore to getAnyInititializer. I think these three should be enough, but I'm not sure where else in the analyzer this would have to be changed.

Mon, Jan 28, 5:17 PM · Restricted Project
NoQ accepted D52984: [analyzer] Checker reviewer's checklist.

I'm slow, but at least i admit it... Just made myself a fancier phabricator query so that not to forget about patches, so hopefully i won't forget about patches that often anymore :/

Mon, Jan 28, 4:32 PM · Restricted Project
NoQ accepted D35068: [analyzer] Detect usages of unsafe I/O functions.

Ok! I hope that the C11 check would do the trick, let's see how it goes :)

Mon, Jan 28, 4:09 PM · Restricted Project
NoQ accepted D55734: [analyzer] Revise GenericTaintChecker's internal representation.

Is it ready to land?

Mon, Jan 28, 3:27 PM
NoQ accepted D57356: [analyzer] [RetainCountChecker] Track input parameters to the top-level function.

I just fail to understand why nobody did that before. As far as i understand, that's a very large improvement.

Mon, Jan 28, 3:02 PM
NoQ accepted D57346: [analyzer] [ARCMT] [NFC] Unify entry point into RetainSummaryManager.

Hmm. Yeah, this looks unused :)

Mon, Jan 28, 2:51 PM
NoQ accepted D57230: [analyzer] Toning down invalidation a bit.

Do you think I should try to reduce additional files?

Aha, ok, it reduced an interesting positive into a non-interesting positive. So i guess my method only works when you're catching changes that are more unexpected than this one :) Ok, nvm then, thank you for trying this out! I didn't have time to evaluate this change yet, but that definitely shouldn't block you from committing.

Mon, Jan 28, 2:38 PM · Restricted Project, Restricted Project

Sat, Jan 26

NoQ added a comment to D57230: [analyzer] Toning down invalidation a bit.
In D57230#1372275, @NoQ wrote:

Do you have success reducing false positives using creduce? My problem usually is that we cannot tell if a reduction rendered a false positive into a true positive.

Sat, Jan 26, 9:28 AM · Restricted Project, Restricted Project

Fri, Jan 25

NoQ accepted D54438: [analyzer] Reimplement dependencies between checkers.

*gets hyped for the upcoming patchlanding party*

Fri, Jan 25, 7:02 PM
NoQ accepted D56989: [analyzer][NFC] Keep track of whether enabling a checker was explictly specified in command line arguments.

I guess we still need to think how exactly do we want to resolve conflicts between dependencies.

Fri, Jan 25, 6:34 PM
NoQ accepted D56988: [analyzer][NFC] Supply CheckerRegistry with AnalyzerOptions.

Yup, totally.

Fri, Jan 25, 6:15 PM
NoQ added a comment to D57230: [analyzer] Toning down invalidation a bit.

Thanks! A surprise, to be sure :) I'll try to test this on my set of projects as well :)

Fri, Jan 25, 6:10 PM · Restricted Project, Restricted Project
NoQ accepted D57201: [analyzer] [RetainSummaryManager] [NFC] Split one function into two, as it's really doing two things.
Fri, Jan 25, 5:55 PM
NoQ accepted D57211: [analyzer] [RetainCountChecker] Support 'taggedRetain' and 'taggedRelease'.

Fair enough.

Fri, Jan 25, 5:52 PM
NoQ added inline comments to D57214: [analyzer] [RetainCountChecker] Escape values stored into smart pointers if they have non-stack storage.
Fri, Jan 25, 5:52 PM
NoQ accepted D57261: [analyzer] [WIP] Opt-in C Style Cast Checker for OSObject pointers.

It sounds to me that for now you're only emitting a warning when a *literally* OSObject is being casted, i.e. not a sub-class to an even more specific sub-class. Is this intended?

Fri, Jan 25, 5:33 PM · Restricted Project

Thu, Jan 24

NoQ accepted D57126: [analysis] Introduce an AnyCall helper class, for abstraction over different callables.

Hmm, looks correct to me now.

Thu, Jan 24, 3:09 PM

Wed, Jan 23

NoQ added inline comments to D57126: [analysis] Introduce an AnyCall helper class, for abstraction over different callables.
Wed, Jan 23, 5:41 PM
NoQ added inline comments to D57126: [analysis] Introduce an AnyCall helper class, for abstraction over different callables.
Wed, Jan 23, 5:29 PM
NoQ accepted D57127: [analyzer] Port RetainSummaryManager to the new GenericCall interface, decouple ARCMT from the analyzer.

*celebrates*

Wed, Jan 23, 4:54 PM · Restricted Project
NoQ added inline comments to D57126: [analysis] Introduce an AnyCall helper class, for abstraction over different callables.
Wed, Jan 23, 4:49 PM
NoQ added a comment to D57126: [analysis] Introduce an AnyCall helper class, for abstraction over different callables.

it's not always suitable, since it's tightly coupled to other analyzer classes (ExplodedNode, ProgramState, etc.) and it's not always possible to construct

Wed, Jan 23, 4:41 PM
NoQ updated subscribers of D57062: [analyzer] Re-enable the "System is over constrained" assertion on optimized builds..

I think there are much more problems that we will find this way, starting from

long foo(long x) {
  unsigned y = (unsigned)x;
  if (y <= -1)
    return 0;
Wed, Jan 23, 1:44 PM

Tue, Jan 22

NoQ created D57062: [analyzer] Re-enable the "System is over constrained" assertion on optimized builds..
Tue, Jan 22, 11:53 AM

Jan 20 2019

NoQ accepted D51866: [analyzer][UninitializedObjectChecker] New flag to ignore guarded uninitialized fields.

I have no objections. George, this was your idea, does it look good to you?

Jan 20 2019, 1:21 PM · Restricted Project

Jan 18 2019

NoQ accepted D56952: [analyzer] Insert notes in RetainCountChecker where our dynamic cast modeling assumes 'null' output.
Jan 18 2019, 6:12 PM
NoQ accepted D56951: [analyzer] Model another special-case kind of cast for OSObject RetainCountChecker.
Jan 18 2019, 6:08 PM
NoQ added a comment to D56823: [analyzer] Do not try to body-farm bodies for Objective-C properties with custom accessors..

Nope, it doesn't seem to skew results at all. I hope my testing machinery is actually working :/

Jan 18 2019, 1:27 PM

Jan 17 2019

NoQ created D56899: [analyzer] pr37688: Fix a crash on trying to evaluate a deleted destructor of a union..
Jan 17 2019, 8:21 PM
NoQ accepted D56891: [analyzer] Introduce proper diagnostic for freeing unowned object.

Yay, visitors.

Jan 17 2019, 7:06 PM
NoQ accepted D56890: [analyzer] Extend the PathDiagnosticLocation constructor to handle CallExitEnd.

Thx! We should transition away from using all other constructors (except this constructor from ProgramPoint), at least in our path-sensitive checkers.

Jan 17 2019, 7:06 PM
NoQ accepted D56887: [analyzer] [NFC] Clean up messy handling of bug categories in RetainCountChecker.
Jan 17 2019, 7:03 PM
NoQ accepted D56884: [analyzer] Extend BugType constructor to accept "SuppressOnSink" as a parameter.

Yay thx!

Jan 17 2019, 6:48 PM
NoQ accepted D56885: [analyzer] const-ify reference to bug type used in BugReporter.
Jan 17 2019, 6:43 PM
NoQ accepted D56884: [analyzer] Extend BugType constructor to accept "SuppressOnSink" as a parameter.

Aha, yeah, cool, there are still uses to be fixed :)

Jan 17 2019, 6:37 PM