[Soot-list] Geometric Encoding: points-to set

Richard Xiao richardxx at cse.ust.hk
Sat Jun 23 01:58:47 EDT 2012


Hi, Florian:

I just run the test driver provided by you and I also found nothing wrong.
The execution log is:

Soot class path:
/home/xiao/workspace/soot-dev/classes:/opt/jdk1.3.1_20/jre/lib/rt.jar
Soot application classes: [mypack.AMain]
Soot library classes: [java.lang.NoClassDefFoundError,
java.lang.LinkageError, java.lang.String, java.lang.Error,
java.lang.Object, java.io.Serializable, java.lang.Comparable,
java.io.UnsupportedEncodingException, java.lang.ThreadLocal,
java.io.ObjectStreamField, java.util.Comparator,
sun.io.ByteToCharConverter, sun.io.CharToByteConverter,
java.lang.StringBuffer, java.util.Locale, java.lang.Long, java.lang.System,
java.lang.Float, java.lang.Double, java.lang.Class,
java.lang.StringIndexOutOfBoundsException, java.lang.Integer,
java.lang.Math, java.lang.String$1, java.lang.InternalError,
java.lang.String$CachedConverter, java.lang.Character,
java.io.CharConversionException,
java.lang.String$CaseInsensitiveComparator, java.lang.Throwable,
java.lang.CloneNotSupportedException, java.lang.InterruptedException,
java.lang.IllegalArgumentException, java.lang.Number,
java.lang.NumberFormatException, java.lang.NullPointerException,
java.io.InputStream, java.io.PrintStream, java.lang.SecurityManager,
java.util.Properties, java.io.BufferedOutputStream,
java.util.PropertyPermission, java.lang.Runtime, java.lang.System$1,
java.security.AccessController, java.lang.RuntimePermission,
java.io.BufferedInputStream, java.lang.Terminator, sun.misc.Version,
java.io.FileInputStream, java.io.FileOutputStream,
java.security.Permission, sun.net.InetAddressCachePolicy,
java.lang.ClassLoader, java.lang.Exception, java.io.FileDescriptor,
java.io.OutputStream, java.security.PrivilegedAction,
java.lang.FloatingDecimal, sun.io.MalformedInputException,
sun.io.UnknownCharacterException, sun.io.ConversionBufferFullException,
sun.io.Converters, java.lang.reflect.Field, java.lang.Boolean,
java.io.ObjectStreamClass, java.lang.Short, java.lang.Byte,
java.lang.ClassNotFoundException, java.lang.Cloneable,
java.util.MissingResourceException, java.io.IOException,
java.util.Hashtable, java.util.ResourceBundle, java.text.MessageFormat,
java.io.ObjectOutputStream, java.io.ObjectInputStream,
java.text.resources.LocaleData, java.text.Format,
sun.security.action.GetPropertyAction, java.util.StringTokenizer,
java.lang.InstantiationException, java.lang.IllegalAccessException,
java.lang.SecurityException, java.lang.NoSuchFieldException,
java.lang.NoSuchMethodException, java.security.ProtectionDomain,
java.lang.Package, java.lang.reflect.Method, java.lang.reflect.Constructor,
java.net.URL, java.security.CodeSource, java.lang.Class$1,
java.security.Permissions, java.security.PermissionCollection,
java.security.AllPermission, java.lang.IndexOutOfBoundsException,
java.util.Random, java.lang.StrictMath,
java.lang.ThreadLocal$ThreadLocalMap, java.lang.Thread,
java.lang.ThreadLocal$1, java.lang.UnsupportedOperationException,
java.lang.VirtualMachineError, java.lang.Character$UnicodeBlock,
java.lang.RuntimeException, java.lang.Character$Subset,
java.lang.IllegalStateException, java.io.PrintWriter,
java.io.FilterOutputStream, java.security.BasicPermission,
java.util.PropertyPermissionCollection, java.io.BufferedWriter,
java.util.Enumeration, java.io.BufferedReader, java.io.Writer,
java.io.InputStreamReader, java.util.Date, java.io.OutputStreamWriter,
java.io.Reader, java.lang.Process, java.io.File,
java.lang.UnsatisfiedLinkError, java.lang.Shutdown, java.awt.AWTPermission,
java.lang.ThreadGroup, java.net.SocketPermission, java.net.InetAddress,
java.lang.SecurityManager$2, java.lang.SecurityManager$1,
java.io.FilePermission, java.security.SecurityPermission,
java.security.AccessControlContext,
java.security.PrivilegedActionException,
java.security.AccessControlException,
java.security.PrivilegedExceptionAction, sun.security.util.Debug,
java.io.InterruptedIOException, java.io.FilterInputStream,
sun.misc.SignalHandler, sun.misc.Signal, java.lang.Terminator$1,
java.io.FileNotFoundException, java.security.Guard,
sun.security.action.GetIntegerAction, java.lang.ClassFormatError,
java.security.cert.Certificate, java.util.Vector, java.util.Set,
java.util.HashMap, sun.misc.URLClassPath, java.util.Stack,
sun.misc.ClassFileTransformer, sun.misc.Launcher, java.lang.ClassLoader$4,
java.util.Map, java.lang.ClassLoader$3, sun.misc.CompoundEnumeration,
java.lang.ClassLoader$2, java.lang.ClassLoader$1, java.util.Collection,
sun.misc.Resource, java.lang.ClassLoader$NativeLibrary, java.util.HashSet,
java.io.SyncFailedException, java.lang.FDBigInt,
java.lang.ref.SoftReference, sun.io.CharacterEncoding,
java.lang.reflect.AccessibleObject, java.lang.reflect.Member,
java.lang.reflect.Modifier, java.io.InvalidClassException,
java.io.ObjectStreamClass$ObjectStreamClassEntry,
java.lang.ArrayIndexOutOfBoundsException,
java.io.ObjectStreamClass$CompareMemberByName,
java.io.StreamCorruptedException,
java.io.ObjectStreamClass$CompareClassByName, java.util.Arrays,
java.lang.Void, java.security.DigestOutputStream,
java.io.ObjectStreamClass$MethodSignature, java.io.ByteArrayOutputStream,
java.io.DataOutputStream, java.io.ObjectStreamClass$1,
java.io.ObjectStreamClass$2, java.security.MessageDigest,
java.lang.reflect.Proxy, java.lang.reflect.InvocationTargetException,
java.security.NoSuchAlgorithmException, java.io.ObjectOutput,
java.io.ObjectStreamConstants, java.io.ObjectOutputStream$HandleTable,
java.io.ObjectOutputStream$Stack, java.io.ObjectOutputStream$PutField,
java.io.ObjectOutputStream$ReplaceTable, java.io.UTFDataFormatException,
java.io.SerializablePermission, java.io.ObjectOutputStream$1,
java.io.ObjectOutputStream$PutFieldImpl, java.io.NotSerializableException,
java.io.Externalizable, java.util.ArrayList, java.io.NotActiveException,
java.text.ParseException, java.text.FieldPosition, java.text.ParsePosition,
java.text.NumberFormat, java.text.SimpleDateFormat, java.text.ChoiceFormat,
java.text.DateFormat, java.io.InvalidObjectException, java.text.Utility,
java.text.DecimalFormat, java.util.ResourceBundle$ResourceCacheKey,
sun.misc.SoftCache, java.util.ResourceBundle$1,
java.util.PropertyResourceBundle, java.util.zip.ZipEntry,
java.text.resources.LocaleData$1, java.util.zip.ZipInputStream,
java.util.Dictionary, java.util.Hashtable$Entry,
java.util.Hashtable$EmptyEnumerator, java.util.Hashtable$EmptyIterator,
java.util.Iterator, java.util.Hashtable$KeySet, java.util.Hashtable$1,
java.util.Map$Entry, java.util.Hashtable$EntrySet,
java.util.Hashtable$Enumerator, java.util.Collections,
java.util.Hashtable$ValueCollection, java.io.ObjectInput,
java.io.OptionalDataException, java.io.DataInputStream,
java.io.ObjectInputStream$GetField, java.io.ObjectInputValidation,
java.io.EOFException, java.lang.NoSuchMethodError,
java.lang.ClassCastException, java.io.ObjectInputStream$GetFieldImpl,
java.io.ValidationCallback, java.io.WriteAbortedException,
java.util.NoSuchElementException,
java.security.cert.CertificateEncodingException,
java.io.ByteArrayInputStream, java.lang.OutOfMemoryError,
java.security.cert.CertificateFactory,
java.security.cert.CertificateException, java.util.List,
java.security.PermissionsHash, java.security.UnresolvedPermission,
java.security.UnresolvedPermissionCollection,
java.security.PermissionsEnumerator, java.util.jar.Manifest,
java.lang.Package$1, java.util.jar.Attributes$Name,
java.util.jar.JarInputStream, java.util.jar.Attributes,
java.security.AllPermissionCollection, java.net.MalformedURLException,
java.net.URLStreamHandler, java.net.NetPermission,
java.net.URLStreamHandlerFactory, java.net.URLConnection,
java.lang.ThreadLocal$ThreadLocalMap$Entry, java.lang.ref.Reference,
java.lang.Runnable, java.lang.IllegalThreadStateException,
java.lang.ThreadDeath, java.security.BasicPermissionCollection,
java.util.Calendar, java.util.TimeZone, java.util.GregorianCalendar,
java.io.FileSystem, java.io.FilenameFilter, java.io.FileFilter,
java.lang.Shutdown$1, java.lang.Shutdown$WrappedHook,
java.lang.Shutdown$Lock, java.security.Security,
java.net.UnknownHostException, java.net.InetAddressImpl,
sun.security.action.LoadLibraryAction, java.net.InetAddress$CacheEntry,
java.io.FilePermission$1, java.io.FilePermissionCollection,
java.security.DomainCombiner, java.security.AccessControlContext$1,
java.security.Policy, java.net.SocketPermissionCollection,
sun.security.action.GetBooleanAction, sun.misc.VM,
sun.misc.NativeSignalHandler, sun.misc.Signal$1,
java.security.InvalidKeyException, java.security.NoSuchProviderException,
java.security.SignatureException, java.io.ObjectStreamException,
java.security.PublicKey, java.security.cert.Certificate$CertificateRep,
java.util.EmptyStackException, java.util.AbstractList,
java.lang.reflect.Array, java.util.Vector$1, java.util.AbstractCollection,
sun.misc.Launcher$Factory, sun.misc.Launcher$4, sun.misc.Launcher$1,
sun.misc.Launcher$ExtClassLoader, sun.misc.Launcher$AppClassLoader,
java.util.AbstractMap, java.util.HashMap$Entry,
java.util.HashMap$EmptyHashIterator, java.util.HashMap$1,
java.util.HashMap$2, java.util.HashMap$3, java.util.HashMap$HashIterator,
sun.misc.URLClassPath$Loader, java.net.JarURLConnection,
sun.misc.URLClassPath$FileLoader, sun.misc.URLClassPath$1,
sun.misc.URLClassPath$2, sun.misc.URLClassPath$JarLoader,
java.util.AbstractSet, java.lang.ref.ReferenceQueue,
sun.io.CharacterEncoding$2, sun.io.CharacterEncoding$1,
java.lang.reflect.ReflectPermission, java.util.Arrays$ArrayList,
java.io.DataOutput, java.security.MessageDigestSpi,
java.security.DigestException, java.security.Provider,
java.security.MessageDigest$Delegate, java.lang.reflect.InvocationHandler,
sun.misc.ProxyGenerator, java.lang.ref.WeakReference,
java.util.WeakHashMap, java.security.GeneralSecurityException,
java.text.DateFormatSymbols, java.util.SimpleTimeZone,
java.math.BigInteger, java.text.DecimalFormatSymbols, java.text.DigitList,
sun.misc.SoftCache$Entry, sun.misc.SoftCache$1,
sun.misc.SoftCache$ValueCell, sun.misc.SoftCache$EntrySet,
java.util.PropertyResourceBundle$1, java.util.zip.ZipConstants,
java.util.zip.InflaterInputStream, java.util.zip.CRC32,
java.util.zip.Inflater, java.util.zip.ZipException,
java.io.PushbackInputStream, java.util.ConcurrentModificationException,
java.util.SortedSet, java.util.SortedMap,
java.util.Collections$SingletonMap, java.util.Collections$UnmodifiableSet,
java.util.Collections$SynchronizedMap,
java.util.Collections$UnmodifiableCollection,
java.util.Collections$UnmodifiableMap, java.util.Collections$CopiesList,
java.util.Collections$EmptyMap, java.util.Collections$EmptyList,
java.util.Collections$ReverseComparator,
java.util.Collections$SynchronizedSet,
java.util.Collections$SynchronizedSortedMap,
java.util.Collections$UnmodifiableSortedSet, java.util.ListIterator,
java.util.Collections$SynchronizedCollection,
java.util.Collections$EmptySet, java.util.Collections$SingletonList,
java.util.Collections$SynchronizedList, java.util.Collections$SingletonSet,
java.util.Collections$6, java.util.Collections$1,
java.util.Collections$UnmodifiableSortedMap,
java.util.Collections$UnmodifiableList,
java.util.Collections$SynchronizedSortedSet,
java.util.AbstractSequentialList, java.io.DataInput,
java.lang.IncompatibleClassChangeError, java.security.cert.CRLException,
java.security.cert.CertificateFactorySpi, java.security.cert.CRL,
java.security.cert.CertificateFactory$1,
java.security.cert.X509Certificate, java.security.Principal,
java.util.jar.JarEntry, java.util.jar.JarVerifier,
sun.security.util.ManifestEntryVerifier,
java.util.jar.Manifest$FastInputStream,
java.security.AllPermissionCollection$1, java.net.UnknownServiceException,
java.net.FileNameMap, java.net.ContentHandlerFactory,
java.net.ContentHandler, sun.net.www.MimeTable,
java.net.UnknownContentHandler, java.lang.IllegalAccessError,
java.net.URLConnection$1, java.lang.ref.Reference$Lock,
java.lang.ref.Reference$1, java.lang.ref.Reference$ReferenceHandler,
java.util.TimeZone$1, java.util.TimeZoneData,
java.security.Security$ProviderProperty, java.security.Security$1,
java.security.Security$2, java.security.Security$3,
java.security.InvalidParameterException, java.security.Policy$1,
sun.security.provider.PolicyFile, sun.misc.VMNotification,
java.security.KeyException, java.security.Key, java.util.SubList,
java.util.AbstractList$Itr, java.util.AbstractList$1,
java.util.AbstractList$ListItr, java.lang.NegativeArraySizeException,
java.net.URLClassLoader, sun.misc.Launcher$2, sun.misc.PathPermissions,
sun.misc.Launcher$3, java.util.AbstractMap$3, java.util.AbstractMap$1,
sun.misc.URLClassPath$3, java.net.HttpURLConnection, java.util.jar.JarFile,
sun.misc.URLClassPath$6, sun.misc.JarIndex,
sun.misc.InvalidJarIndexException, sun.misc.ExtensionDependency,
java.util.LinkedList, sun.misc.URLClassPath$5, sun.misc.URLClassPath$4,
java.lang.ref.ReferenceQueue$Lock, java.lang.ref.ReferenceQueue$Null,
java.lang.ref.ReferenceQueue$1, sun.misc.ProxyGenerator$ConstantPool,
sun.misc.ProxyGenerator$MethodInfo, sun.misc.ProxyGenerator$1,
sun.misc.ProxyGenerator$FieldInfo,
sun.misc.ProxyGenerator$ExceptionTableEntry,
sun.misc.ProxyGenerator$PrimitiveTypeInfo,
sun.misc.ProxyGenerator$ProxyMethod, java.util.WeakHashMap$1,
java.util.WeakHashMap$EntrySet, java.util.WeakHashMap$WeakKey,
java.util.WeakHashMap$Entry, java.math.MutableBigInteger,
java.lang.ArithmeticException, java.math.BitSieve,
java.util.zip.DataFormatException, java.util.zip.Checksum,
java.util.Collections$SingletonMap$ImmutableEntry,
java.util.Collections$UnmodifiableMap$UnmodifiableEntrySet,
java.util.Collections$4, java.util.Collections$5, java.util.Collections$2,
java.security.cert.X509Extension,
java.security.cert.CertificateExpiredException,
java.security.cert.CertificateNotYetValidException,
sun.security.util.ManifestDigester,
java.util.jar.JarVerifier$VerifierStream,
sun.security.pkcs.ParsingException,
sun.security.util.SignatureFileVerifier, java.util.jar.JarException,
sun.misc.BASE64Decoder, sun.misc.CharacterDecoder, sun.net.www.MimeEntry,
sun.net.www.MimeTable$1, sun.net.www.MimeTable$2,
java.security.IdentityScope, java.security.KeyStore,
java.security.Identity, sun.security.provider.PolicyParser$GrantEntry,
sun.security.provider.PolicyParser, sun.security.provider.PolicyFile$5,
sun.security.provider.PolicyFile$4, sun.security.provider.PolicyFile$3,
sun.security.provider.PolicyFile$2, sun.security.provider.PolicyFile$1,
sun.security.util.PropertyExpander, java.security.KeyStoreException,
sun.security.provider.PolicyParser$PermissionEntry,
sun.security.provider.PolicyParser$ParsingException,
sun.security.provider.PolicyPermissions, sun.net.www.ParseUtil,
sun.security.provider.SystemSigner, sun.security.provider.IdentityDatabase,
sun.security.provider.SystemIdentity,
sun.security.provider.PolicyFile$PolicyEntry, java.util.SubList$1,
java.security.SecureClassLoader, java.net.URLClassLoader$3,
java.net.URLClassLoader$6, java.net.URLClassLoader$5,
java.net.URLClassLoader$7, java.net.URLClassLoader$2,
java.net.URLClassLoader$1, sun.misc.PathPermissions$1,
java.util.AbstractMap$4, java.util.AbstractMap$2,
java.net.ProtocolException, java.util.zip.ZipFile,
java.util.jar.JarFile$JarFileEntry, java.util.jar.JarFile$1,
sun.misc.ExtensionInstallationException,
sun.misc.ExtensionInstallationProvider, sun.misc.ExtensionInfo,
sun.misc.ExtensionDependency$1, sun.misc.ExtensionDependency$2,
sun.misc.ExtensionDependency$3, java.util.LinkedList$Entry,
java.util.LinkedList$ListItr, sun.misc.ProxyGenerator$ConstantPool$Entry,
sun.misc.ProxyGenerator$ConstantPool$IndirectEntry,
sun.misc.ProxyGenerator$ConstantPool$ValueEntry,
java.math.SignedMutableBigInteger, java.util.Collections$3,
java.util.Collections$UnmodifiableMap$UnmodifiableEntrySet$UnmodifiableEntry,
sun.security.pkcs.PKCS7, sun.security.pkcs.SignerInfo,
sun.security.pkcs.ContentInfo, sun.security.util.ManifestDigester$Entry,
sun.security.util.ManifestDigester$Position, sun.misc.CEStreamExhausted,
sun.misc.CEFormatException, sun.net.www.ApplicationLaunchException,
sun.net.www.MimeLauncher,
sun.security.util.PropertyExpander$ExpandException,
java.io.StreamTokenizer, java.io.FileReader, java.io.FileWriter,
java.security.UnrecoverableKeyException, java.security.KeyStoreSpi,
java.security.KeyStore$1, java.security.PrivateKey,
java.security.KeyManagementException, java.security.IdentityScope$1,
java.security.Certificate, java.util.BitSet, java.security.Signer,
java.security.KeyPair, sun.security.provider.IdentityDatabase$1,
java.net.URLClassLoader$4, java.net.FactoryURLClassLoader,
java.util.zip.ZipFile$ZipFileInputStream, java.util.zip.ZipFile$1,
java.util.zip.ZipFile$2, sun.security.util.DerEncoder,
sun.security.util.BigInt, sun.security.x509.X500Name,
sun.security.x509.AlgorithmId, sun.security.pkcs.PKCS9Attributes,
sun.security.util.DerInputStream, sun.security.util.DerOutputStream,
sun.security.util.DerValue, sun.misc.CharacterEncoder,
sun.security.x509.KeyUsageExtension, java.security.Signature,
sun.security.pkcs.PKCS9Attribute, sun.security.x509.PKIXExtensions,
sun.misc.HexDumpEncoder, sun.security.util.ObjectIdentifier,
java.security.cert.X509CRL, sun.security.x509.X509CertImpl,
sun.security.x509.X509CRLImpl, java.security.Signer$1,
sun.security.util.DerInputBuffer, sun.security.util.BitArray,
sun.security.util.DerIndefLenConverter,
sun.security.util.ByteArrayLexOrder, sun.security.util.ByteArrayTagOrder,
sun.security.x509.Extension, sun.security.x509.CertAttrSet,
sun.security.x509.AttributeNameEnumeration, java.security.SignatureSpi,
java.security.InvalidAlgorithmParameterException,
java.security.SecureRandom, java.security.spec.AlgorithmParameterSpec,
java.security.Signature$Delegate, java.lang.ExceptionInInitializerError,
sun.security.x509.CertificateExtensions, java.security.AlgorithmParameters,
sun.security.x509.GeneralNameInterface, sun.security.x509.RDN,
sun.security.x509.AVA, java.security.cert.X509CRLEntry,
java.security.cert.CertificateParsingException,
sun.security.x509.X509CertInfo, sun.security.x509.OIDMap,
sun.security.x509.UniqueIdentity, sun.security.x509.CertificateValidity,
sun.security.x509.BasicConstraintsExtension,
sun.security.x509.X509AttributeName, sun.security.x509.SerialNumber,
sun.security.x509.CRLExtensions, sun.security.x509.X509CRLEntryImpl,
java.security.SecureRandomSpi, sun.security.provider.SecureRandom,
sun.security.provider.Sun,
java.security.spec.InvalidParameterSpecException,
java.security.AlgorithmParametersSpi, java.io.StringReader,
sun.security.x509.CertificateVersion,
sun.security.x509.CertificateSerialNumber,
sun.security.x509.CertificateAlgorithmId,
sun.security.x509.CertificateIssuerName,
sun.security.x509.CertificateSubjectName,
sun.security.x509.CertificateX509Key,
sun.security.x509.CertificateIssuerUniqueIdentity,
sun.security.x509.CertificateSubjectUniqueIdentity,
sun.security.provider.SeedGenerator, sun.security.provider.Sun$1,
sun.security.x509.X509Key,
sun.security.provider.SeedGenerator$URLSeedGenerator,
sun.security.provider.NativeSeedGenerator,
sun.security.provider.SeedGenerator$2,
sun.security.provider.SeedGenerator$1,
sun.security.provider.SeedGenerator$ThreadedSeedGenerator,
java.security.spec.KeySpec, java.security.spec.X509EncodedKeySpec,
java.security.spec.InvalidKeySpecException, java.security.KeyFactory,
sun.security.provider.SeedGenerator$4,
sun.security.provider.SeedGenerator$ThreadedSeedGenerator$BogusThread,
sun.security.provider.SeedGenerator$3, java.security.spec.EncodedKeySpec,
java.security.KeyFactorySpi, java.lang.InstantiationError,
java.lang.ref.Finalizer, java.lang.ref.FinalReference,
java.lang.ref.Finalizer$1, java.lang.ref.Finalizer$2,
java.lang.ref.Finalizer$3, java.lang.ref.Finalizer$FinalizerThread,
java.lang.NoSuchFieldError, java.lang.StackOverflowError,
java.lang.ArrayStoreException, java.lang.VerifyError,
java.lang.AbstractMethodError, java.lang.UnknownError,
java.lang.ClassCircularityError, java.lang.IllegalMonitorStateException]
[Call Graph] For information on where the call graph may be incomplete, use
the verbose option to the cg phase.
Total methods: 5862
Initially reachable methods: 3
Classes with at least one reachable method: 2
[Spark] Pointer Assignment Graph in 0.3 seconds.
Total types: 727
[Spark] Type masks in 0.0 seconds.
VarNodes: 7
FieldRefNodes: 2
AllocNodes: 3
Cleaning up graph for merged nodes
Done cleaning up graph for merged nodes
[Spark] Pointer Graph simplified in 0.0 seconds.
Worklist has 3 nodes.
Now handling field references
[Spark] Propagation in 0.0 seconds.
[Spark] Solution found in 0.0 seconds.
[Spark] Number of reachable methods: 7
Spark [Time] : 0.050s
Spark [Memory] : 41.691MB

Geom starts working on untitled benchmark.

Round 0 :
Reachable Methods = 7, in which #Condensed Nodes = 8, #Full Context Nodes =
0
Maximum SCC = 1
The maximum context size = 2.000000e+00
We have 8 legal constraints at the beginning, accounting for 38.1% of the
total.
Totally 1 virtual edges, we find 0 of them are obsoleted.

Preprocess [Time] : 0.014s
Geometric [Time] : 0.061s
Geometric [Memory] : 35.538MB
[MiniTest Field] Base name: thisMain
[MiniTest Field] Field name: field
[MiniTest Field] Reaching object: AllocNode 4 new java.lang.Object in
method <mypack.AMain: void <init>()>,
[MiniTest Local] Variable name: alias
[Minitest Local] Reaching object: AllocNode 4 new java.lang.Object in
method <mypack.AMain: void <init>()>,


Can you just download the newest source code from the SVN repository and
run your case again? Importing the source code as a fresh project, maybe
you own modifications to the code before change something but you are not
aware of. Please tell me your result and let me help you finally solve your
problem.

Regards,
Richard


On Fri, Jun 22, 2012 at 7:38 PM, Florian Strauß <f_straus at cs.uni-kl.de>wrote:

> Hello Richard,
>
>
>
> thank you for your efforts!
>
> In the attachment is a minimized (all-in-one) junit test class.
>
> Test methods testPtsField() and testIntersection() fail because the
> points-to set of thisMain.field is empty.
>
> Do you have an idea, what am I doing wrong?
>
>
>
> Regards,
>
> Florian
>
>
>
>
>
>
>
> *Von:* frogxx at gmail.com [mailto:frogxx at gmail.com] *Im Auftrag von *Richard
> Xiao
> *Gesendet:* Freitag, 22. Juni 2012 11:04
> *An:* Florian Strauß
>
> *Betreff:* Re: [Soot-list] Geometric Encoding: points-to set
>
>
>
> Hi, Florian:
>
>
>
> I tested your code using the latest code in the repository for many times,
> but it doesn't exhibit the problem that your reported.
>
> My execution log is :
>
>
> Statement : alias = thisMain.<mypack.AMain: java.lang.Object field>
> Points-to Result for thisMain.<mypack.AMain: java.lang.Object field>:
>          AllocNode 488 new java.lang.Object in method <mypack.AMain: void
> <init>()>
> Is it alias to the pointer alias? true
>
>
>
> If possible, can you send me your test driver code? Or, could you give
> more information about your experimental setting?
>
>
>
> Regards,
>
> Richard
>
>
>
>
>
> On Fri, Jun 22, 2012 at 12:36 PM, Richard Xiao <richardxx at cse.ust.hk>
> wrote:
>
> Hi, Florian:
>
>
>
> Thanks very much for your interests in the geometric points-to solver.
> Because I was asked for preparing a paper submission by my advisor, so I
> didn't get time to debug the code. Now the draft has finished, I promise to
> debug your case immediately! Please wait a moment for my sound. Thanks
> again for your patience.
>
>
>
> Best Regards,
>
> Richard
>
>
>
>
>
> On Fri, Jun 22, 2012 at 7:37 AM, Florian Strauß <f_straus at cs.uni-kl.de>
> wrote:
>
> Hello Richard,
>
> after downloading a new nightly build, cleaning and rebuilding my projects
> the problem that the results were not preciser than Spark is resolved
> (itself?). Sorry for my confusing email.
> But in the following example, the points-to set of "field" is still empty.
> But I would expect that the points-to set of "field" and "alias" has a non
> empty intersection. The points-to set of "alias" is not empty. And if I use
> other approaches like Spark or Paddle, then I get the expected results. But
> I would prefer your approach, if we are able to solve this problem.
>
>
>
> >>      > public class AMain {
> >>      >
> >>      >
> >>      >
> >>      >        Object field = new Object();
> >>      >
> >>      >
> >>      >
> >>      >        public static void main(String[] args) {
> >>      >
> >>      >              AMain thisMain = new AMain();
> >>      >
> >>      >              Object alias = thisMain.field;
> >>      >
> >>      >              alias.equals(alias);
> >>      >
> >>      >        }
> >>      >
> >>      >
> >>      >
> >>      > }
>
> Do you have any new ideas? Did you had the time to reproduce the problem?
>
> Best regards,
> Florian
>
>
>
>
>
> On 22.06.2012 00:12, Florian Strauß wrote:
>
> Hello Richard,
>
> I am just wondering, if you may have any new ideas. Did you had the time
> to reproduce the problems?
>
> Regards,
> Florian
>
>
> On 13.06.2012 07:17, Richard Xiao wrote:
>
> Hi, Florian:
>
> Sorry for my late reply. I'm attending the PLDI conference right now,
> thereby I have limited time to look inside of your reported case. The
> API didn't change, since my recent commit totally changed the behavior
> of the points-to solver, maybe that causes the problem. I will try my
> best to figure out the problem quickly after the PLDI. Sorry for the
> delay.
>
> Regards,
> Richard
>
> On Sun, Jun 10, 2012 at 7:24 PM, Florian Strauß <f_straus at cs.uni-kl.de
>
> <mailto:f_straus at cs.uni-kl.de>> wrote:
>
>    Hi Richard,
>
>      thanks for your reply.
>
>      I downloaded the nightly built version from
>    http://vandyk.st.informatik.tu-darmstadt.de/abc/soot.jar
>    Are there changes in the API ? Because now I get imprecise points-to
>    results
>    (= I don't see a difference compared to Spark).
>
>    Example:
>    public class AMain{
>            public static void main(String[] args){
>                    ClassA c1 = new ClassA();
>                    ClassA c2 = new ClassA();
>
>                    Object o1 = new Object();
>                    Object o2 = new Object();
>
>                    c1.setO(o1);
>                    c2.setO(o2);
>
>                    Object testVariable1 = c1.getO();
>                    Object testVariable2 = c2.getO();
>
>                    testVariable1.equals(testVariable2);
>            }
>    }
>
>    public class ClassA{
>            Object o;
>            public Object getO() {
>                    return o;
>            }
>            public void setO(Object paramO) {
>                    this.o = paramO;
>            }
>    }
>
>    -----
>    Output older soot version:
>
>    1 starts working on untitled benchmark.
>    Preprocess Time : 0,015s
>
>    Round 0 :
>    Reachable Methods = 9, in which #Condensed Nodes = 10, #Full Context
>    Nodes =
>    0 Maximum SCC = 1 The maximum context size = 4.000000e+00 We have 19
>    legal
>    constraints at the beginning, occupies 0,475 of the total.
>    Totally 5 virtual edges, we find 0 of them are obsoleted.
>    Current Reachable Methods = 10, Originally = 9
>
>    Geometric [Time] : 0,000s
>    Geometric [Memory] : 14,445MB
>
>    Points-to set testVariable1:
>    AllocNode 3 new java.lang.Object in method
> <tests.data.simpleTest.AMain:
>    void main(java.lang.String[])>, Points-to set testVariable1:
>    AllocNode 4 new java.lang.Object in method
> <tests.data.simpleTest.AMain:
>    void main(java.lang.String[])>, Non empty intersection? false
>
>    ----
>    Nightly build version:
>    Geom starts working on untitled benchmark.
>
>    Round 0 :
>    Reachable Methods = 9, in which #Condensed Nodes = 10, #Full Context
>    Nodes =
>    0 Maximum SCC = 1 The maximum context size = 4.000000e+00 We have 19
>    legal
>    constraints at the beginning, accounting for 47,5% of the total.
>    Totally 5 virtual edges, we find 0 of them are obsoleted.
>
>    Sorry, it's not necessary to iterate more times. We stop here.
>
>    Preprocess [Time] : 0,000s
>    Geometric [Time] : 0,265s
>    Geometric [Memory] : 14,454MB
>
>    Points-to set testVariable1:
>    AllocNode 4 new java.lang.Object in method
> <tests.data.simpleTest.AMain:
>    void main(java.lang.String[])>,AllocNode 3 new java.lang.Object in
>    method
>    <tests.data.simpleTest.AMain: void main(java.lang.String[])>,
>    Points-to set
>    testVariable2:
>    AllocNode 4 new java.lang.Object in method
> <tests.data.simpleTest.AMain:
>    void main(java.lang.String[])>,AllocNode 3 new java.lang.Object in
>    method
>    <tests.data.simpleTest.AMain: void main(java.lang.String[])>, Non
> empty
>    intersection? true
>
>
>    Thanks for your help
>    Regards,
>    Florian
>
>
>
>    -----Ursprüngliche Nachricht-----
>    Von: frogxx at gmail.com <mailto:frogxx at gmail.com>
>
>    [mailto:frogxx at gmail.com <mailto:frogxx at gmail.com>] Im Auftrag von
>
>
>    Richard Xiao
>    Gesendet: Freitag, 8. Juni 2012 21:59
>    An: Florian Strauß
>
>    Cc: soot-list at sable.mcgill.ca <mailto:soot-list at sable.mcgill.ca>
>
>
>    Betreff: Re: [Soot-list] Geometric Encoding: points-to set
>
>    Hi, Florian Strauß:
>
>    Thanks a lot for your interest in the geometric encoding and your
>    report.
>    Please download and try the nightly built version to see if the
>    problem is
>    still there. I have changed the code a lot since the
>    2.5 release. Since I'm on a travel, I will try your case myself and
>    fix the
>    problem soon.
>
>    Regards,
>    Richard
>
>
>
>    On 6/8/12, Florian Strauß <f_straus at cs.uni-kl.de
>
>    <mailto:f_straus at cs.uni-kl.de>> wrote:
>     > Hello,
>     >
>     >
>     >
>     > thanks for your help in the past.
>     >
>     > For my alias analysis I am using the Geometric Encoding
> approach. It
>     > works fine in most of the cases, but I am wondering about the
> results
>     > in the following example:
>     >
>     >
>     >
>     > public class AMain {
>     >
>     >
>     >
>     >        Object field = new Object();
>     >
>     >
>     >
>     >        public static void main(String[] args) {
>     >
>     >              AMain thisMain = new AMain();
>     >
>     >              Object alias = thisMain.field;
>     >
>     >              alias.equals(alias);
>     >
>     >        }
>     >
>     >
>     >
>     > }
>     >
>     >
>     >
>     >
>     >
>     > If I ask for all reachable Objects of field, I expect a
>    representation
>     > of new Object().
>     >
>     > Unfortunately, the returned points-to set is empty. Do you have an
>     > idea, what am I doing wrong?
>     >
>     >
>     >
>     > More details about my configuration:
>     >
>     > I use the following options
>     >
>     >
> Options.v().setPhaseOption("cg","implicit-entry:false");
>     >
>     >
>     >
>     >              //spark configuration
>     >
>     >
> Options.v().setPhaseOption("cg.spark","enabled:true");
>     >
>     >
>     > Options.v().setPhaseOption("cg.spark","string-constants:true");
>     >
>     >
>     > Options.v().setPhaseOption("cg.spark","field-based:false");
>     >
>     >
>     > Options.v().setPhaseOption("cg.spark","empties-as-allocs:true");
>     >
>     >
> Options.v().setPhaseOption("cg.spark","on-fly-cg:true");
>     >
>     >
>     > Options.v().setPhaseOption("cg.spark","merge-stringbuffer:false");
>     >
>     >              //Spark + Geometric Encoding
>     >
>     >
> Options.v().setPhaseOption("cg.spark","geom-pta:true");
>     >
>     >
>     >
>     >
>     >
>     > I cannot explain the results of
>     > Scene.v().getPointsToAnalysis().reachingObjects(local, field);
>     >
>     > If I use Spark only (= geom-pta:false), then it returns an
> allocation
>     > node (AllocNode 4 new java.lang.Object in method <AMain: void
>     > <init>()>,) , which is the same allocation node being reachable
> from
>     > the local variable alias.
>     > Otherwise the points-to sets of thisMain.field  and  alias are
>     > different, because the points-to set of alias is empty.
>     >
>     >
>     >
>     > Could you please help me?
>     >
>     >
>     >
>     > Have a good weekend
>     >
>     > Florian
>     >
>     >
>     >
>     >
>     >
>     >
>     >
>     >
>     >
>     >
>
>
>    --
>    One day I met you then love appears to the world.
>
>
>    _______________________________________________
>    Soot-list mailing list
>
>    Soot-list at sable.mcgill.ca <mailto:Soot-list at sable.mcgill.ca>
>
>
>    http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
>
>
>
>
> --
> Richard Xiao Xiao
> PhD Student @ CSE @ Hong Kong University of Science and Technology
>
> www.cse.ust.hk/~richardxx <http://www.cse.ust.hk/~richardxx>
>
> E-Mail ist virenfrei.
> Von AVG überprüft - www.avg.de <http://www.avg.de>
> Version: 2012.0.2180 / Virendatenbank: 2433/5065 - Ausgabedatum:
> 12.06.2012
>
>
>
>
>
>
>
>
> --
> Richard Xiao Xiao
>
> PhD Student @ CSE @ Hong Kong University of Science and Technology
>
> www.cse.ust.hk/~richardxx
>
>
>
>
>
>
> --
> Richard Xiao Xiao
>
> PhD Student @ CSE @ Hong Kong University of Science and Technology
>
> www.cse.ust.hk/~richardxx
>
>
>



-- 
Richard Xiao Xiao
PhD Student @ CSE @ Hong Kong University of Science and Technology
www.cse.ust.hk/~richardxx
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.cs.mcgill.ca/pipermail/soot-list/attachments/20120623/fb012e74/attachment-0001.html 


More information about the Soot-list mailing list