You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I used Soot RTA to construct a call graph and find a false positive. In the following program, Soot reports two edges in the call graph: (1) Main.main -> Thread1.run; (2) Main.main -> Thread2.run. However, the second edge is obviously a false positive as Thread2 class is never instantiated. Hence, RTA should not add this edge to CG based on its algorithm design.
Besides, when I used Soot CHA to construct the call graph, it does not report this false positive. It is confusing as CHA is more sound than RTA.
Describe the bug
I used Soot RTA to construct a call graph and find a false positive. In the following program, Soot reports two edges in the call graph: (1)
Main.main -> Thread1.run
; (2)Main.main -> Thread2.run
. However, the second edge is obviously a false positive as Thread2 class is never instantiated. Hence, RTA should not add this edge to CG based on its algorithm design.Besides, when I used Soot CHA to construct the call graph, it does not report this false positive. It is confusing as CHA is more sound than RTA.
Input files
Main.java
Thread1.java
Thread2.java
Results
Soot RTA Edge: <Main: void main(java.lang.String[])> --> <Thread1: void run()>
Soot RTA Edge: <Main: void main(java.lang.String[])> --> <Thread2: void run()> // false positive
To reproduce
Steps to reproduce the behavior:
I used Soot 4.4.1 and the options are listed below:
The text was updated successfully, but these errors were encountered: