soot-oss / soot

Soot - A Java optimization framework
GNU Lesser General Public License v2.1
2.85k stars 706 forks source link

Relaxing a runtimeexception with warning in Type Manager #1987

Closed piskachev closed 1 year ago

piskachev commented 1 year ago

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.