[Soot-list] ConcurrentModificationException in an extremely simple code piece

Eric Bodden bodden at st.informatik.tu-darmstadt.de
Thu May 27 03:12:51 EDT 2010


Hi Sai.

I think there's currently no alternative to using the -w mode. But
when you use phase options to disable all other w* packs except for
your own then actually you Soot should not require you to provide a
main class, I think.

Eric

--
Dr. Eric Bodden
Software Technology Group, Technische Universität Darmstadt, Germany
Tel: +49 6151 16-5478    Fax: +49 6151 16-5410
Mailing Address: S2|02 A209, Hochschulstraße 10, 64289 Darmstadt



On 26 May 2010 19:59, Sai Zhang <racezhang at gmail.com> wrote:
> Thanks Eric/Patrick.
>
> Using BodyTransformer  seems to be a bad choice.  But using SceneTransformer
> seems to need enable the "-w" option and requires a main method (if I did
> not remember wrong). For my case, "change the current method signature" and
> probably add some new method to the SootClass, do you have have any
> suggestion  or best practice on using which transformers? ( I did not have
> experience in Soot to do so)
>
> thanks
>
> -Sai
>
> On Tue, May 25, 2010 at 11:11 PM, Eric Bodden
> <bodden at st.informatik.tu-darmstadt.de> wrote:
>>
>> Patrick is right.
>>
>> setName actually removes the method from the container class and then
>> adds it again:
>>
>>    public void setName(String name) {
>>        boolean wasDeclared = isDeclared;
>>        SootClass oldDeclaringClass = declaringClass;
>>        if( wasDeclared ) oldDeclaringClass.removeMethod(this);
>>        this.name = name;
>>        subsignature =
>>            Scene.v().getSubSigNumberer().findOrAdd(getSubSignature());
>>        if( wasDeclared) oldDeclaringClass.addMethod(this);
>>    }
>>
>> My guess is that this is to keep some name-based information
>> consistent. This causes your exception. This can even happen with just
>> a single thread.
>>
>> The solution is to instead use a SceneTransformer (in the "wjtp" pack)
>> because that does not execute such implicit iteration code.
>>
>> Eric
>>
>> --
>> Dr. Eric Bodden
>> Software Technology Group, Technische Universität Darmstadt, Germany
>> Tel: +49 6151 16-5478    Fax: +49 6151 16-5410
>> Mailing Address: S2|02 A209, Hochschulstraße 10, 64289 Darmstadt
>>
>>
>>
>> On 26 May 2010 02:32, Patrick Lam <plam at cs.mcgill.ca> wrote:
>> > On 05/25/10 20:08, Sai Zhang wrote:
>> >> It seems that there is no other thread in modifying the SootMethod
>> >> object.
>> >> So, a bit confused!  Any hints are welcome!
>> >
>> > I haven't looked at this case in particular, but
>> > ConcurrentModificationExceptions arise when you iterate on a list and
>> > modify it during iteration, even if there's only one thread.
>> >
>> > pat
>> > _______________________________________________
>> > Soot-list mailing list
>> > Soot-list at sable.mcgill.ca
>> > http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
>> >
>> _______________________________________________
>> Soot-list mailing list
>> Soot-list at sable.mcgill.ca
>> http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
>
>
>
>


More information about the Soot-list mailing list