secure-software-engineering / phasar

A LLVM-based static analysis framework.
Other
933 stars 140 forks source link

stdio type state analysis has a bug? #650

Open small-cat opened 1 year ago

small-cat commented 1 year ago

Bug description

the result is not correct when I use phasar-cli to check the following example. (See the files below)

Steps to reproduce

./phasar-cli -m fopen-test-5.bc -C dta -D ide-stdio-ts --log --log-level=DEBUG

Actual result: The result is correct when analyze the procedure myfunc3, the status is ERROR at the exit statement. But I have two doubts,

It is a bug, or my misunderstand?

Context (Environment)

I pull the latest version from development branch.

Operating System:

Build Type:

Files: test.tar.gz

MMory commented 1 year ago

Hi @small-cat , this is indeed a bug and fixing is in progress.

MMory commented 1 year ago

Hi @small-cat , could you please try https://github.com/secure-software-engineering/phasar/tree/f-FixTSAGlobalHandling? I assume you might find more issues, so I am not merging that branch to development yet. Thank you for your tests!

MMory commented 1 year ago

Hi @small-cat , did you find more issues with the analysis? I would like to merge the branch referenced above soon.

small-cat commented 1 year ago

Yes, I found another problem. When I use phasar to analyze kernel, the one is that phasar use llvm::CFLAnderson algorithm to analyze kernel code which cause an OOM error, the algorithm seems can not stop, and I should to change to use CFLSteens algorithm, and I made a issue before about this problem. Another one is that at the buildLLVMTypeHierarchy function when analyze kernel code, use the boost::transitive_closure interface cost too much memory and may lead to an OOM error, I change to use the boost::breadth_first_search to iterate the TypeGraph and solve the problem.

fabianbs96 commented 11 months ago

@small-cat, you are right. We are aware of the alias analysis problem (see #329, #610). We are also working on a different type-hierarchy solution #623; however, it will still take some time to complete