[Soot-list] Problems with nested try..catch..finally?

Attila Bartha at.bartha at gmail.com
Fri Oct 9 05:22:27 EDT 2009


Hi

 

I have some bytecode that soot.coffi.CFG cannot process to generate the
Jimple IR: Soot throws a NullpointerException in CFG.adjustExceptionTable().

The code being analyzed has 3 nested try catch finally blocks.
Unfortunately, I have not been able to isolate the code from the huge rest
yet.

Are there any known issues and limitations with regards to Exception
handling?

 

I looked at the code, and it seems that it occurs that for some cases,
exception_table_entry.start_inst can be null. 

 

Here's the stack trace:

 
java.lang.NullPointerException

                                               at
java.util.Hashtable.get(Unknown Source)

                                               at
soot.coffi.CFG.adjustExceptionTable(CFG.java:775)

                                               at
soot.coffi.CFG.eliminateJsrRets(CFG.java:351)

                                               at
soot.coffi.CFG.<init>(CFG.java:83)

                                               at
soot.coffi.CoffiMethodSource.getBody(CoffiMethodSource.java:87)

                                               at
soot.SootMethod.getBodyFromMethodSource(SootMethod.java:84)

                                               at
soot.SootMethod.retrieveActiveBody(SootMethod.java:338)

                                               at
soot.PackManager.runBodyPacks(PackManager.java:776)

                                               at
soot.PackManager.runBodyPacks(PackManager.java:457)

                                               at
soot.PackManager.runBodyPacks(PackManager.java:376)

                                               at
soot.PackManager.runPacks(PackManager.java:353)

                                               at
soot.Main.run(Main.java:202)

                                               at
soot.Main.main(Main.java:145)

 

Questions:

 

1.       Is there a quick fix for this problem? 

2.       Is it possible to skip or replace the call of
soot.coffi.CFG.eliminateJsrRets()?

3.       Why does dava not generate finally blocks? It generates another
try..catch instead.

 

Thank you for input

 

Attila

 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.cs.mcgill.ca/pipermail/soot-list/attachments/20091009/46d02a9f/attachment.html 


More information about the Soot-list mailing list