[Soot-list] Exception Analysis

John Jorgensen jorgnsn at lcd.uregina.ca
Mon Oct 22 14:57:33 EDT 2007


>>>>> "irem" == irem  <irem at nada.kth.se> writes:

    irem> The analysis worked this way just fine. Now what I
    irem> wonder is vmErrors.  What does this mean? I checked the
    irem> API spec and there one talks about VM_ERRORS. I do not
    irem> know what these mean either.

Well, this is sort-of documented.  There is javadoc in the source
for ThrowableSet.java
(http://svn.sable.mcgill.ca/viewcvs/soot/trunk/src/soot/toolkits/exceptions/ThrowableSet.java?rev=2734&view=markup):

	/**
	 * <code>ThrowableSet</code> containing all the asynchronous
	 * and virtual machine errors, which may be thrown by any
	 * bytecode instruction at any point in the computation.
	 */
	final ThrowableSet VM_ERRORS;

But it isn't included in the HTML generated from the javadoc
comments because VM_ERRORS is package-private.  You need to look
at the source for ThrowableSet to see that VM_ERRORS is the set
of the five exceptions:
 
  java.lang.InternalError
  java.lang.OutOfMemoryError
  java.lang.StackOverflowError
  java.lang.UnknownError
  java.lang.ThreadDeath

The rationale for this group of errors is explained on page 6 of
technical report sable-tr-2003-3 
(http://www.sable.mcgill.ca/publications/techreports/sable-tr-2003-3.pdf),
but the technical report calls them "asynchronous exceptions" rather
than VM errors.

I might try to think of some way to have the members of VM_ERRORS
appear in the API-documentation (ideally in a fashion
guaranteeing that the documentation stays consistent with any
changes to the implementation), but it's been long enough since
I've dealt with this code that I'm likely to mess things up
should I touch it.


More information about the Soot-list mailing list