Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Make ArrayBoundsChecker a whole-program analysis to fix a concurrency bug #1453

Open
wants to merge 4 commits into
base: develop
Choose a base branch
from

Conversation

tiziw
Copy link

@tiziw tiziw commented Sep 2, 2020

This fixes #1354. It's caused by the fact that multiple running ArrayBoundsChecker transformations can run certain analyses (SimpleLocalDefs) on the same method, resulting into data being overwritten (in this case, the local.getNumber field). I suspect this happened, because the transformation was designed before (2000) Soot parallelized BodyTransformation's or even supported SceneTransformation's.

I'm not sure if I modified all the documentation correctly. GitHub pages still needs to be modified I think. Furthermore, I added a -w flag to the annot-arraybounds, since now its a whole-program transformation. As for the ui code (PhaseOptionsDialog) I didn't test it.

I've tested the transformation and it works in whole-program mode. Hope this is of any use.

@tiziw
Copy link
Author

tiziw commented Oct 20, 2020

On second note, I made ArrayBoundsCheck run for all reachable methods, as a whole-program transformation. Maybe a config option should be added incase someone wants to run the transformation only on application classes?

# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant