Relaxing a runtimeexception with warning in Type Manager #1987
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
We are facing a runtime exception caused by the Type manager in multiple jars.
For example the issue appears in the following maven packages when trying to construct the SPARK callgraph:
This is caused due to the assumption made for the BitVector representation of the point-to algorithm as documented here: https://github.com/soot-oss/soot/blob/develop/src/main/java/soot/jimple/spark/internal/TypeManager.java#L141
In this special case with cast operation to a type that is a phantom class and the type mask cant be found, Soot throws a runtime exception.
This PR relaxes this behavior, by logging a warning message and letting the algorithm continuing with possible decreased precision.
Unfortunately, the paper (https://arxiv.org/pdf/1108.2683.pdf) that introduced the precise points-to algorithm with type information does not explain such corner cases. Hence, a deeper investigation will be needed for better solution.