<html><head></head><body><div class="yahoo-style-wrap" style="font-family:Helvetica Neue, Helvetica, Arial, sans-serif;font-size:13px;"><div dir="ltr" data-setdir="false"><div><div dir="ltr" style="font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;">Hi,</div><div dir="ltr" style="font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;"><br></div><div dir="ltr" style="font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;">I am using Soot (org.soot.oss 4.2.1) to perform an interprocedural analysis on Android methods (in the wjtp phase). To this end, I am extracting reachable methods from Android lifecycles using Scene.v().getCallgraph().edgesOutOf(method). However, I noticed that some virtual and special edges seem to always be missing from the returned set. For e.g, given:</div><div dir="ltr" style="font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;"><br></div><div dir="ltr" style="font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;"><div><pre style="white-space: pre-wrap; background-color: rgb(43, 43, 43); color: rgb(169, 183, 198); font-family: "JetBrains Mono", monospace; font-size: 8pt;"><span style="color: rgb(204, 120, 50);">class </span>B <span style="color: rgb(204, 120, 50);">extends </span>A{<br>    <span style="color: rgb(204, 120, 50);">void </span><span style="color: rgb(255, 198, 109);">onCreate</span>(...){<br>        setContentView(C0027R.layout.merge)<span style="color: rgb(204, 120, 50);">;<br></span><span style="color: rgb(204, 120, 50);">        super</span>.onCreate(bundle)<span style="color: rgb(204, 120, 50);">;<br></span><span style="color: rgb(204, 120, 50);">        </span>setNextActivity(C.<span style="color: rgb(204, 120, 50);">class</span>)<span style="color: rgb(204, 120, 50);">;<br></span><span style="color: rgb(204, 120, 50);">    </span>}<br>}<br><br><span style="color: rgb(204, 120, 50);">class </span>A{<br>    <span style="color: rgb(204, 120, 50);">public void </span><span style="color: rgb(255, 198, 109);">setNextActivity</span>(){<br>        ...<br>    }<br>}</pre></div><br></div><div dir="ltr" style="font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;">When computing the reachable methods for B.onCreate(), neither setContentView, super.onCreate or setNextActivity are included as targets for the outgoing edges (only clinit is returned). However, when using CHA instead of Spark, these are part of the returned set (along other overapproximations), so I am assuming there might be some issue when performing the points-to analysis. Here are the options I am using:</div><div dir="ltr" style="font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;"><br></div><div dir="ltr" style="font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;"><div><div>Options.v().set_src_prec(Options.src_prec_apk);</div><div>Options.v().set_output_format(Options.output_format_none);</div><div><br></div><div>Options.v().set_no_bodies_for_excluded(true);</div><div>Options.v().set_allow_phantom_refs(true);</div><div>Options.v().set_android_jars(androidJar);</div><div><br></div><div>Options.v().set_process_dir(Collections.singletonList(apkPath));</div><div>Options.v().set_soot_classpath(androidJar);</div><div>Options.v().set_process_multiple_dex(true);</div><div><br></div><div>Options.v().set_whole_program(true);</div><div>Options.v().setPhaseOption("cg", "all-reachable:true");</div><div>Options.v().setPhaseOption("cg.spark", "on");</div><div>Options.v().setPhaseOption("cg.spark", "verbose:true");</div><div>Options.v().setPhaseOption("cg.spark", "string-constants:true");</div><div><br></div><div>Options.v().setPhaseOption("jb.ulp", "off");</div><div> </div><div>Main.v().autoSetOptions();</div><div>Scene.v().loadNecessaryClasses();</div></div><br></div><div dir="ltr" style="font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;"><br></div><div dir="ltr" style="font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;"><br></div><div dir="ltr" style="font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;">I would greatly appreciate any pointers about what I might be missing (maybe an option that wasn't set properly) or what the problem could be.</div><div style="font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;"><br></div><div class="ydpe100fcb3yiv8338436184ydpb2934a7fsignature" style="font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;"><div style="font-family: Helvetica, Arial, sans-serif;"><div dir="ltr">Best regards,</div><div dir="ltr">Faridah Akinotcho</div></div></div></div><br></div></div></body></html>