[Soot-list] java.lang.ref.Finalizer

Ondrej Lhotak olhotak at uwaterloo.ca
Thu Mar 20 11:49:19 EDT 2008


Hi Khilan...

There are some places where the call edges generated by Soot are not
exactly the same ones seen by *J, but the intent is to model the same
behaviour.

The one example that I remember is the doPrivileged method:
at run time, some method A calls doPrivileged, passing in an object, and
doPrivileged calls run on the object. The edge that Soot generates goes
from A directly to run, bypassing doPrivileged. This makes it possible
to model parameter passing: the native implementation of doPrivileged
passes its first parameter as the receiver of run. The result is that
probe will show a difference, but the overall effect on any analysis
is the same.

For java.lang.ref.Finalizer, I remember something similar, but I do not
remember the details.

Ondrej


On Tue, Mar 11, 2008 at 12:29:20PM +0000, Khilan Gudka wrote:
>    Dear All,
> 
>    I'm running soot + spark with Sun Java 1.5 with 1.3 libs
>    (rt.jar,tools.jar,sunrsasign.jar) prepended to the classpath. I've been
>    comparing static and dynamic call graphs (using probe with soot and starj)
>    and have a question about one particular edge that appears at run-time but
>    doesn't appear in spark's call graph:
> 
>    java.security.Security: initialize() ===> java.lang.ref.Finalizer:
>    register(Ljava/lang/Object;)
> 
>    The call to register(Object) exists because a FileInputStream is
>    constructed in initialize(), which has a finalize() method. Why does it
>    not appear in spark's call graph? This class isn't loaded by reflection,
>    so the -dynamic-class flag doesn't work, register(Object) is an implicit
>    invokation by the JVM.
> 
>    Any help would be greatly appreciated.
> 
>    Thanks,
>    Khilan

> _______________________________________________
> Soot-list mailing list
> Soot-list at sable.mcgill.ca
> http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list



More information about the Soot-list mailing list