[Soot-list] Soot exception during call graph build phase

Eric Bodden eric.bodden at ec-spride.de
Wed Sep 26 07:48:54 EDT 2012


Hi.

> Sorry for asking again, but OnFlyCallGraphBuilder.processNewMethod
> only checks for "m.isNative() || m.isPhantom()", not "m.isAbstract()".
> Is it okay to do that? I found that the method(onReceiveBroadcast) which
> throws an exception here is an abstract method.
>
> Andrea, could you tell me how you solved your problem?

I think that the check might be ok because method calls inside the
call graph should always go to concrete, resolved methods and not to
abstract ones. That is because the call graph, as far as I know,
regards calls between concrete types (as determined by the points-to
analysis). But if you call a method on a concrete type then this type
*must* have a non-abstract implementation of that method.

In your case, if you look at the bytecode of
TimedSingleBroadcastReceiver, are both the method and the class
defined as abstract? Otherwise maybe the bytecode is incorrect...

Eric


More information about the Soot-list mailing list