[Soot-list] interface invoke expression for non-interface type
Tillmann
tirunkel at informatik.uni-bremen.de
Fri Jan 20 06:26:18 EST 2012
Thanks Eric for your investigations.
I've reported that and it's led under Bug #122.
For my concerns i can easily work-around this problem.
Tillmann
Am 20.01.2012 11:56, schrieb Eric Bodden:
> Hmm, I can confirm this is a bug. It's a nested JSR, that for some
> reason does not get eliminated. As I said, I guess this bug does not
> get triggered often because this is really odd code. I wonder what
> compiler the lucene folks are using...
>
> I may look into this some more when I have more time, but not today.
> Tillmann, could you open a bug reprot and attach the class file to it?
> Thanks
>
> Eric
>
> On 19 January 2012 17:32, Eric Bodden<eric.bodden at ec-spride.de> wrote:
>> Tillmann, could you send me the .class file by email? Then I will try
>> to reproduce this here.
>>
>> Eric
>>
>> On 19 January 2012 17:05, Tillmann<tirunkel at informatik.uni-bremen.de> wrote:
>>>>> I've checked this with the stable v2.4. The trunk-version seems to be
>>>>> more
>>>>> forgiving about class resolving. Without the allow-phantom-refs-option
>>>>> soot2.4 exits with an Exception that indicates the missing Class (in my
>>>>> case
>>>>> the Authentication of the Spring Framework) If i add the relevant parts
>>>>> of
>>>>> the Spring-Framework, the classloading seems to be okay. So i switched
>>>>> back
>>>>> to the trunk-version of soot but now during the CHA-Transformation
>>>>> following
>>>>> occurs:
>>>>>
>>>>> Exception in thread "main" java.lang.RuntimeException: Unrecognized
>>>>> bytecode
>>>>> instruction: 168
>>>>> at soot.coffi.CFG.generateJimple(CFG.java:4637)
>>>>> at soot.coffi.CFG.jimplify(CFG.java:1267)
>>>>>
>>>>> with 2.4 the same occurs:
>>>>>
>>>>> Exception in thread "main" java.lang.RuntimeException: Unrecognized
>>>>> bytecode
>>>>> instruction: 168
>>>>> at soot.coffi.CFG.generateJimple(CFG.java:4644)
>>>>> at soot.coffi.CFG.jimplify(CFG.java:1263)
>>>>> at soot.coffi.CFG.jimplify(CFG.java:951)
>>>>>
>>>>> So i will take a closer look at the bytecode. I'll keep you current.
>>>> This is odd for two reasons: First, 168 is a JSR bytecode, which has
>>>> been deprecated for ages. Second, though, Soot usually should handle
>>>> JSRs correctly, converting them into other equivalent bytecodes.
>>>> Having said that, I am not sure when someone last loaded a class file
>>>> with a JSR into Soot...
>>>>
>>>> Eric
>>>
>>> the problem occurs when parsing the following Instruction (in
>>> org.apache.lucene.store.NativeFSLock.class - part of apache's lucene-core
>>> library)
>>>
>>> 73: jsr[73] 79
>>>
>>> by generateJimple(...) in CFG:2924
>>>
>>> in which step the jsr-handling takes place?
>>>
>>> Regards
>>>
>>> Tillmann
>>>
>>> surrounding bytecode:
>>>
>>> // Method descriptor #80 ()V
>>> // Stack: 4, Locals: 9
>>> public synchronized void release() throws java.io.IOException;
>>> 0 aload_0 [this]
>>> 1 invokespecial org.apache.lucene.store.NativeFSLock.lockExists() :
>>> boolean [7]
>>> 4 ifeq 167
>>> 7 aload_0 [this]
>>> 8 getfield org.apache.lucene.store.NativeFSLock.lock :
>>> java.nio.channels.FileLock [6]
>>> 11 invokevirtual java.nio.channels.FileLock.release() : void [35]
>>> 14 jsr 26
>>> 17 goto 127
>>> 20 astore_1
>>> 21 jsr 26
>>> 24 aload_1
>>> 25 athrow
>>> 26 astore_2
>>> 27 aload_0 [this]
>>> 28 aconst_null
>>> 29 putfield org.apache.lucene.store.NativeFSLock.lock :
>>> java.nio.channels.FileLock [6]
>>> 32 aload_0 [this]
>>> 33 getfield org.apache.lucene.store.NativeFSLock.channel :
>>> java.nio.channels.FileChannel [30]
>>> 36 invokevirtual java.nio.channels.FileChannel.close() : void [32]
>>> 39 jsr 51
>>> 42 goto 125
>>> 45 astore_3
>>> 46 jsr 51
>>> 49 aload_3
>>> 50 athrow
>>> 51 astore 4
>>> 53 aload_0 [this]
>>> 54 aconst_null
>>> 55 putfield org.apache.lucene.store.NativeFSLock.channel :
>>> java.nio.channels.FileChannel [30]
>>> 58 aload_0 [this]
>>> 59 getfield org.apache.lucene.store.NativeFSLock.f :
>>> java.io.RandomAccessFile [27]
>>> 62 invokevirtual java.io.RandomAccessFile.close() : void [33]
>>> 65 jsr 79
>>> 68 goto 123
>>> 71 astore 5
>>> 73 jsr 79 //<-- BAD LINE!
>>> 76 aload 5
>>> 78 athrow
>>> 79 astore 6
>>> 81 aload_0 [this]
>>> 82 aconst_null
>>> 83 putfield org.apache.lucene.store.NativeFSLock.f :
>>> java.io.RandomAccessFile [27]
>>> 86 getstatic org.apache.lucene.store.NativeFSLock.LOCK_HELD :
>>> java.util.HashSet [21]
>>> ...
>>
>>
>> --
>> Eric Bodden, Ph.D., http://bodden.de/
>> Head of Secure Software Engineering Group at EC SPRIDE
>> Principal Investigator in Secure Services at CASED
>> Tel: +49 6151 16-75422 Fax: +49 6151 16-72051
>> Room 3.2.14, Mornewegstr. 30, 64293 Darmstadt
>
>
More information about the Soot-list
mailing list