reprogrammer / keshmesh

Keshmesh is a static analysis tool for finding and fixing concurrency bug patterns in Java.
http://keshmesh.cs.illinois.edu/
Other
16 stars 5 forks source link

Make Keshmesh scale on large projects #37

Closed reprogrammer closed 13 years ago

reprogrammer commented 13 years ago

Keshmesh with unlimited object sensitivity runs out of memory for any real Java project. So, we have to make the context less precise to make it scale on larger projects.

reprogrammer commented 13 years ago

@Wanderer777, @samira-t:

We cannot easily exclude the JDK classes from the call graph because at least the detector of LCK01J requires some of the JDK classes (See commit c5de10177bb5d4073f5923e7ce1288a3ce785516).

reprogrammer commented 13 years ago

@Wanderer777, @samira-t:

I ran all of our JUnit tests, exported the results of their runs, and added them to the repository (See commit bb8ecfa3a14bf3da72d295dfe1600e171488a8d4). Fortunately, most of the tests pass. I believe a few failures are because of the problems within the tests themselves. But, there are a few test specially those for VNA00-J that fail and I haven't investigate the root causes of their failures.

Even though checking the results of runs of JUnit tests pollutes the repository a little, it allows us to compare the results of our tests across commits and track how our commits affect the tests. What do you think about the checking the results of the latest runs of our tests into the repository?

Wanderer777 commented 13 years ago

@reprogrammer: Ideally, we should not commit when our tests fail. But considering that we make some fundamental changes and fix the tests later (or make more changes), which means that Keshmesh is evolving with some portion of its tests failing, the results of these tests indeed become important to track.

reprogrammer commented 13 years ago

We believe that we've configured WALA appropriately and it cannot be made significantly more scalable. As a result, the users of Keshmesh should pick entry points that do not lead to huge call graphs.