Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ArrayIndexOutOfBoundsException when analyzing Jimple of non-nullary methods #15

Open
maemre opened this issue Dec 20, 2018 · 2 comments

Comments

@maemre
Copy link

maemre commented Dec 20, 2018

Hi,

I want to use the numerical analysis provided by Jandom in a research project and I am getting an ArrayOutOfBoundsException when analyzing methods with more than 0 parameters (including some of the examples that come with Jimple).

I am getting the error on two different computers running Windows 10 and Ubuntu 18.04 respectively, both using JDK 8. I am using the master branch of Jandom. My Jimple configuration (which can be used for reproducing the bug), using the GUI is as follows:

Tool: Soot (in the context menu).

Editor tab:

  • IR Type: Jimple
  • Analysis type: Numerical (Object also fails)
  • Class: NumericalTest
  • Method: void arraylimit(int)

Parameters tab:

  • Domain: BoxDouble (I tried all of them but Octagon)
  • Object Domain: Aliasing
  • Widening Scope: Localized
  • Narrowing Strategy: Separate
  • Widening Delay: [blank]
  • Debug: unchecked

This is the stack trace of the exception I'm getting on the SBT console:

[error] java.lang.ArrayIndexOutOfBoundsException: 3
[error]         at it.unich.jandom.targets.jvmsoot.JimpleMethod.jimpleExprToLinearForm$1(JimpleMethod.scala:55)
[error]         at it.unich.jandom.targets.jvmsoot.JimpleMethod.jimpleExprToLinearCond$1(JimpleMethod.scala:82)
[error]         at it.unich.jandom.targets.jvmsoot.JimpleMethod.analyzeCond$1(JimpleMethod.scala:124)
[error]         at it.unich.jandom.targets.jvmsoot.JimpleMethod.$anonfun$analyzeBlock$8(JimpleMethod.scala:281)
[error]         at it.unich.jandom.targets.jvmsoot.JimpleMethod.$anonfun$analyzeBlock$8$adapted(JimpleMethod.scala:237)
[error]         at scala.collection.Iterator.foreach(Iterator.scala:929)
[error]         at scala.collection.Iterator.foreach$(Iterator.scala:929)
[error]         at scala.collection.AbstractIterator.foreach(Iterator.scala:1417)
[error]         at scala.collection.IterableLike.foreach(IterableLike.scala:71)
[error]         at scala.collection.IterableLike.foreach$(IterableLike.scala:70)
[error]         at scala.collection.AbstractIterable.foreach(Iterable.scala:54)
[error]         at it.unich.jandom.targets.jvmsoot.JimpleMethod.analyzeBlock(JimpleMethod.scala:237)
[error]         at it.unich.jandom.targets.jvmsoot.JimpleMethod.analyzeBlock(JimpleMethod.scala:39)
[error]         at it.unich.jandom.targets.cfg.ControlFlowGraph.analyzeFromAnnotation(ControlFlowGraph.scala:133)
[error]         at it.unich.jandom.targets.cfg.ControlFlowGraph.analyze(ControlFlowGraph.scala:118)
[error]         at it.unich.jandom.ui.gui.SootEditorPane.analyze(SootEditorPane.scala:224)
[error]         at it.unich.jandom.ui.gui.MainFrame$$anon$8.apply(MainFrame.scala:93)
[error]         at scala.swing.Action$$anon$1.actionPerformed(Action.scala:78)
[error]         at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
[error]         at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
[error]         at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
[error]         at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
[error]         at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
[error]         at java.awt.Component.processMouseEvent(Component.java:6539)
[error]         at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
[error]         at java.awt.Component.processEvent(Component.java:6304)
[error]         at java.awt.Container.processEvent(Container.java:2239)
[error]         at java.awt.Component.dispatchEventImpl(Component.java:4889)
[error]         at java.awt.Container.dispatchEventImpl(Container.java:2297)
[error]         at java.awt.Component.dispatchEvent(Component.java:4711)
[error]         at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4904)
[error]         at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4535)
[error]         at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4476)
[error]         at java.awt.Container.dispatchEventImpl(Container.java:2283)
[error]         at java.awt.Window.dispatchEventImpl(Window.java:2746)
[error]         at java.awt.Component.dispatchEvent(Component.java:4711)
[error]         at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)
[error]         at java.awt.EventQueue.access$500(EventQueue.java:97)
[error]         at java.awt.EventQueue$3.run(EventQueue.java:709)
[error]         at java.awt.EventQueue$3.run(EventQueue.java:703)
[error]         at java.security.AccessController.doPrivileged(Native Method)
[error]         at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
[error]         at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84)
[error]         at java.awt.EventQueue$4.run(EventQueue.java:733)
[error]         at java.awt.EventQueue$4.run(EventQueue.java:731)
[error]         at java.security.AccessController.doPrivileged(Native Method)
[error]         at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
[error]         at java.awt.EventQueue.dispatchEvent(EventQueue.java:730)
[error]         at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
[error]         at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
[error]         at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
[error]         at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
[error]         at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
[error]         at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
amato-gianluca added a commit that referenced this issue Dec 27, 2018
@amato-gianluca
Copy link
Member

Dear Mehmet,
thanks for reporting this bug and sorry for the late answer. A long time has passed since the last time I worked on the Jimple analyzer, so I needed time to study my own code!! The problem you reported should be fixed by now. In the meantime, I found other methods which are not analyzed correctly, and I am working on fixing them, too.

Unfortunately, the Soot analyzer is mostly unfinished. But now that I am up to par with my previous work, I am very interested in fixing bug and making it work effectively. So, if you are still interested in using Jandom, do not hesitate to contact me.

@maemre
Copy link
Author

maemre commented Dec 30, 2018

@amato-gianluca Thank you! If I encounter any more bugs, will contact you to report them.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants