[Soot-list] Exception Analysis

John Jorgensen jorgnsn at lcd.uregina.ca
Wed Oct 17 14:45:06 EDT 2007


>>>>> "eric.bodden" == Eric Bodden <eric.bodden at mail.mcgill.ca> writes:

    eric.bodden> In fact it is true that *certain*
    eric.bodden> exceptions can be thrown at every single
    eric.bodden> statement, e.g. exceptions of type
    eric.bodden> OutOfMemoryError. The default exception analysis
    eric.bodden> encodes this soundly.

Actually (in the spirit of pedantry) *all* exceptions have the potential to be
thrown at every single statement, since, to quote the
documentation of PedanticThrowAnalysis:

  the deprecated Thread.stop(Throwable) method allows one thread to
  cause any Throwable it wants to be thrown in another thread,
  meaning that all Throwables may arrive asynchronously from the
  perspective of the victim thread

    eric.bodden> There is a constructor
    eric.bodden> ExceptionalUnitGraph(Body,ThrowAnalysis) that
    eric.bodden> you can use to create an exceptional unit graph
    eric.bodden> with a "real" throw analysis. The default is a
    eric.bodden> pedantic throw analysis, which causes your
    eric.bodden> problems:

If I remember correctly, if you're calling your analyses via
soot.Main (rather than using soot as a library), there are
command-line options to change the default behaviour of the
ExceptionalUnitGraph constructor; see the "-throw-analysis",
"-omit-excepting-unit-edges", and "-trim-cfgs" options in

  http://www.sable.mcgill.ca/soot/tutorial/usage/index.html

(or "soot --help").  You probably want "-trim-cfgs".


More information about the Soot-list mailing list