[Soot-list] Multithreaded soot

Eric Bodden eric.bodden at mail.mcgill.ca
Tue Aug 5 09:43:31 EDT 2008


Hi Silviu.

All I can say about this is that I know that people have tried this
before and as far as I know have -unfortunately- all failed. We
thought quite some times about paralleliying parts of Soot, especially
the simplification, because it's conceptually extremely easy to
paralleliye and because it is the one component of Soot that often
eats up most of the execution time. Unfortunately Soot uses many
shared data structures, which leads to problems like the one you found
here. Your particular problem may (or may not) be solved by putting
synchroniyation in the Manager but in general problems are more
involved.

Any patch to make Soot parallel in a safe way would be very welcome
and a great contribution.

Eric

2008/8/5 Silviu ANDRICA <silviu.andrica at epfl.ch>:
> Hello,
>   Thanks very much for all the support you provided me with!
>   Now I have another question: can I make the retrieval of a Body from a
> SootMethod parallel? meaning that I want to have threads and each one of
> them should get the active Body of a different method?
>   Or, if this cannot be done, then can I parallelize the building of CFGs?
> This latter version I actually tried in practice and I got the following
> exception trace:
>
> Exception in thread "Thread-0" java.util.ConcurrentModificationException
>   at
> java.util.LinkedList$ListItr.checkForComodification(LinkedList.java:761)
>   at java.util.LinkedList$ListItr.next(LinkedList.java:696)
>   at
> soot.toolkits.exceptions.ThrowableSet$Manager.registerSetIfNew(ThrowableSet.java:317)
>   at
> soot.toolkits.exceptions.ThrowableSet$Manager.access$900(ThrowableSet.java:92)
>   at soot.toolkits.exceptions.ThrowableSet.add(ThrowableSet.java:842)
>   at soot.toolkits.exceptions.ThrowableSet.add(ThrowableSet.java:744)
>   at
> soot.toolkits.exceptions.UnitThrowAnalysis$UnitSwitch.caseThrowStmt(UnitThrowAnalysis.java:453)
>   at soot.jimple.internal.JThrowStmt.apply(JThrowStmt.java:97)
>   at
> soot.toolkits.exceptions.UnitThrowAnalysis.mightThrow(UnitThrowAnalysis.java:77)
>   at
> soot.toolkits.graph.ExceptionalUnitGraph.getExceptionDests(ExceptionalUnitGraph.java:799)
>   at
> soot.toolkits.graph.ExceptionalUnitGraph.buildHeadsAndTails(ExceptionalUnitGraph.java:762)
>   at
> soot.toolkits.graph.ExceptionalUnitGraph.initialize(ExceptionalUnitGraph.java:284)
>   at
> soot.toolkits.graph.ExceptionalUnitGraph.<init>(ExceptionalUnitGraph.java:149)
>   at
> soot.toolkits.graph.ExceptionalUnitGraph.<init>(ExceptionalUnitGraph.java:166)
>
>
> Best regards,
>   Silviu
>
> _______________________________________________
> Soot-list mailing list
> Soot-list at sable.mcgill.ca
> http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
>



-- 
Eric Bodden
Sable Research Group
McGill University, Montréal, Canada


More information about the Soot-list mailing list