[Soot-list] Potential bug fix for ThreadLocalObjectsAnalysis

Khilan Gudka khilan at doc.ic.ac.uk
Tue Mar 15 07:02:07 EDT 2011


Hi,

Actually there is another bug. Here is my test case:

public class SimpleSharing {

    Object f;

    public static void main(String[] args) {

        final SimpleSharing x = new SimpleSharing();

        x.f = new Object();

        // share x
        (new Thread() {
            public void run() {
                x.f = null;
            }
        }).start();
    }

}


TLO says that x is thread-local and x.f is shared but x is shared here as
well?

Thanks,
Khilan

On 15 March 2011 13:33, Khilan Gudka <khilan at doc.ic.ac.uk> wrote:

> Hi,
>
> I think I have a potential bug fix for
> http://www.sable.mcgill.ca/pipermail/soot-list/2009-September/002504.html.
> It seems that the bug is due to an assumption that if an object is
> thread-local then all it's fields are also thread-local. This manifests
> itself in ClassLocalObjectsAnalysis.java with the call to
> setAllFieldsLocal() in the block:
>
> else if( SmartMethodLocalObjectsAnalysis.isObjectLocal(dfa,
> containingMethod, containingContext, iie.getBase()) )
>
> {
>
> // calling a method on a local object
>
> callingContext.setAllFieldsLocal();
>
> callingContext.setThisLocal();
>
> }
>
>
> However, Arie's test-case breaks this assumption because although publish
> is thread-local, publish.d isn't. Hence, I commented out the call to
> setAllFieldsLocal() and it is now giving the correct result, that publish is
> thread-local and publish.d is thread-shared.
>
>
> Please let me know if this is correct.
>
>
> Cheers,
>
> Khilan
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.cs.mcgill.ca/pipermail/soot-list/attachments/20110315/fa9d7a24/attachment.html 


More information about the Soot-list mailing list