[Soot-list] How to obtain the topological graph in the transactional transformation phase (wjtp.tn)?

Marco Bakera marco.bakera at tu-dortmund.de
Mon Nov 10 08:59:28 EST 2008


Hey Richard,

thanks for your very fast support and your efforts. :)

However, I am sorry to say that I'm in doubt whether the graph you created 
perfectly fits my needs. I assume the graph depicts the critical section 
interference graph. 

Anyhow, I need a graph that reflects synchronized blocks on lock objects as 
nodes and edges being introduced between two such nodes if one such 
synchronized block reaches the other one (e.g. via methods calls).

Here is some example that will hopefully make everything clearer. :)

class A {
  Object lock1 = new Object();

  void methodF() {
    synchronized(lock1) {
      new B().methodF();
    }
}

class B {
  Object lock2 = new Object();

  void methodF() {
    synchronized(lock2) {
      ;
    }
  }
}

will create a lock graph with two nodes for lock objects lock1 and lock2, and 
one edge lock1 -> lock2.

Is there some kind of (intermediate) structure in your analysis that may 
support me on this? 
Do you know of another part of Soot that could help me?


Best regards and thank you for your help,
Marco.

On Sunday 09 November 2008 05:33:43 RichardLHalpert at gmail.com wrote:
> Marco,
> Ok, I checked in a small change so that you can call
> soot.jimple.toolkits.thread.synchronization.LockAllocator.v().getInterferen
>ceGraph() after invoking Soot from your code. There wasn't an existing graph
> interface in Soot that would be immediately appropriate for the
> interference graph, so I didn't do anything on that front just yet. You can
> use the CriticalSectionInterferenceGraph object directly. For historical
> reasons, the CriticalSectionInterferenceGraph is stored in a rather unusual
> way: as a set of groups of critical sections (nodes). Each group implements
> Iterable<CriticalSection>. The (bidirectional) edges to/from a node are
> stored in a field "public HashSet<CriticalSectionDataDependency> edges" on
> the CriticalSection. Naturally, each edge is therefore stored twice, once
> at each of its end nodes.
>
> -Rich
>
> On Nov 8, 2008 8:57am, "Richard L. Halpert"
>
> <richard.halpert at mail.mcgill.ca> wrote:
> > Marco,
> > Well, that's not really possible right now, but if you're willing to use
>
> a nightly build (rather than a released version of Soot), then I can
> check-in some way to access the graph (hopefully today). Currently, the
> graph is created as a local variable during the wjtp.tn phase, but I could
> store in it a static variable and make it accessible by something like:
> soot.jimple.toolkits.thread.synchronization.LockAllocator.v().getInterferen
>ceGraph(), which you could call from your code after running Soot.
>
> > Right now the interference graph doesn't implement any normal graph-like
>
> interface. I'll see if I can throw one on there quickly, but if not, I'll
> send you some info on how to use the data structure in its current form.
>
> > -Rich
> >
> > On Sat, Nov 8, 2008 at 8:11 AM, Marco Bakera marco.bakera at tu-dortmund.de>
>
> wrote:
> > Thanks for that fast help. That's a commandline that looks more like
>
> Soot. ;)
>
> > Is it possible to obtain the generated graph directly by using Soot's
>
> API? I
>
> > would like to process this graph further in my Java application.
> >
> >
> >
> >
> >
> > Thanks for help and greetings from Germany,
> >
> > Marco.
> >
> > On Friday 07 November 2008 18:51:51 Richard L. Halpert wrote:
> > > Copying this to the list, since it may be helpful to others.
> > >
> > >
> > >
> > > On Fri, Nov 7, 2008 at 9:50 AM, Richard L. Halpert
> > >
> > > richardlhalpert at gmail.com> wrote:
> > > > The main problem is that you need to run in whole-program mode or
> > > > wjtp
> > > >
> > > > will not be run. You also should use Spark for points-to analysis.
> > > > Try
> > > >
> > > > this:
> > > >
> > > >
> > > >
> > > > java -Xmx1024m soot.Main -cp
> >
> > .:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/jre/lib/jce.jar:$JAVA_HOME/jre/lib
> >
> > > >/jsse.jar -w --app -p cg.cha enabled:false -p cg.spark enabled:true -p
> > > >
> > > >
> > > > wjtp.tnenabled:true -p wjtp.tn locking-scheme:leave-original -p
>
> wjtp.tn
>
> > > > do-tlo:false -p wjtp.tndo-mhp:true -p wjtp.tn print-graph:true
> > > >
> > > >
> > > > YourMainClass
> > > >
> > > >
> > > >
> > > > The print-graph:true option should cause Soot to print a .dot file to
> > > >
> > > > stdout (with a prefix on every line, which you will need to remove).
>
> You
>
> > > > will need the dot program to turn the .dot file into a graphic (it
> > > >
> > > > supports all kinds of outputs - png, svg, ps, etc.).
> > > >
> > > >
> > > >
> > > > -Rich
> > > >
> > > >
> > > >
> > > >
> > > >
> > > > On Fri, Nov 7, 2008 at 7:53 AM, Marco Bakera
> > > >
> > > > marco.bakera at uni-dortmund.de
> > > >
> > > > > wrote:
> > > >>
> > > >> Hey everybody,
> > > >>
> > > >>
> > > >>
> > > >> I am currently looking for locking information in java code and
>
> stumpled
>
> > > >> upon
> > > >>
> > > >> your transactional transformation phase and especially the
>
> topological
>
> > > >> graph
> > > >>
> > > >> that will be created here.
> > > >>
> > > >>
> > > >>
> > > >> I tried to get some information about the transactional regions in
>
> java
>
> > > >> programs by calling
> > > >>
> > > >>
> > > >>
> > > >> java soot.Main -p wjtp.tn on -p wjtp.tn locking-scheme:leave -p
>
> wjtp.tn
>
> > > >> print-graph:true java.lang.Integer
> > > >>
> > > >>
> > > >>
> > > >> but did not get the desired topological graph.
> > > >>
> > > >>
> > > >>
> > > >> Do you have any suggestions what went wrong?
> > > >>
> > > >>
> > > >>
> > > >> Thanks for help.
> > > >>
> > > >>
> > > >>
> > > >>
> > > >>
> > > >> Best regards,
> > > >>
> > > >> Marco.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part.
Url : http://mailman.CS.McGill.CA/pipermail/soot-list/attachments/20081110/d0f306cc/attachment.bin


More information about the Soot-list mailing list