Open zhou-shulin opened 5 years ago
Could you post your analysis code?
The first exception seems to be caused by incorrect type inference conducted by Soot. It might be related to #999. The last one might be related to this problem when ignoring resolution errors, but this is just a guess.
Could you further investigate the cause of these issues?
I assume finding the cause of the ConcurrentModificationException
and solve it might be the easiest of those three...
I am using soot to do some static analysis on Java program. I wrote an analysis transformer in 'wjtp" phase that only read information from jimple code, nothing is changed. But when I ran the transformer on HBase-2.1.1 (including hbase-common-2.1.1.jar, hbase-server-2.1.1.jar and hbase-client-2.1.1.jar), here comes a problem as follows (The detailed stack information is in attachment-1.txt):
The source code of this
org.apache.hadoop.hbase.regionserver.MetricsRegionServerSourceFactory
is in "hbase/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerSourceFactory.java" as follows, it is clear that thisMetricsRegionServerSourceFactory
is a interface. Also I have used the options "-allow-phantom-refs" to avoid this kind of unknown class to be resolve incorrectly.Then I added the option "-ignore-resolution-errors" in my transformer, but there came another exception as follows:
Next, I added another jar file (hbase-hadoop-compat-2.1.1.jar) to analyse, and no problem came yet.
However, when I added all the jar files in hbase-2.1.1-bin.tar.gz from official websites to analyse. It came another problem as follows:
Then I changed the ArrayList as CopyOnWriteArrayList to avoid ConcurrentModificationException, it still has some weird problems as follows:
What is the problem? Why this single thread analysis without any deletion on elements could induce ConcurrentModificationException ? And what is the root cause of the last exception?
Hope for guidance sincerely!