zxcalc / quantomatic

Quantomatic is a tool for doing automated graph rewriting.
http://quantomatic.github.io
152 stars 22 forks source link

Pressing "apply rewrite" rewrite crashes the derivation #176

Closed rossduncan closed 6 years ago

rossduncan commented 6 years ago

I don't know how to trigger this except by just working in quanto for a while.

Sometimes, when you select a rewrite and press "Apply" instead of doing the rewrite it blanks the right hand panel and does nothing. From this point it seems to be impossible to continue the derivation, and it's necessary to restart Quantomatic.

Stack trace is

[error] Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: -1
[error]         at java.util.ArrayList.elementData(ArrayList.java:418)
[error]         at java.util.ArrayList.get(ArrayList.java:431)
[error]         at javax.swing.JTabbedPane.setTitleAt(JTabbedPane.java:1316)
[error]         at scala.swing.TabbedPane$Page.title_$eq(TabbedPane.scala:41)
[error]         at quanto.gui.ClosablePage.title_$eq(ClosableTabbedPane.scala:13)
[error]         at quanto.gui.DocumentPage$$anonfun$1.applyOrElse(DocumentPage.scala:17)
[error]         at quanto.gui.DocumentPage$$anonfun$1.applyOrElse(DocumentPage.scala:15)
[error]         at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:36)
[error]         at scala.swing.Reactions$Impl$$anonfun$apply$1.apply(Reactions.scala:23)
[error]         at scala.swing.Reactions$Impl$$anonfun$apply$1.apply(Reactions.scala:23)
[error]         at scala.collection.immutable.List.foreach(List.scala:381)
[error]         at scala.collection.generic.TraversableForwarder$class.foreach(TraversableForwarder.scala:35)
[error]         at scala.collection.mutable.ListBuffer.foreach(ListBuffer.scala:45)
[error]         at scala.swing.Reactions$Impl.apply(Reactions.scala:23)
[error]         at scala.swing.Reactions$Impl.apply(Reactions.scala:17)
[error]         at scala.swing.Publisher$$anonfun$publish$1.apply(Publisher.scala:47)
[error]         at scala.swing.Publisher$$anonfun$publish$1.apply(Publisher.scala:47)
[error]         at scala.collection.Iterator$class.foreach(Iterator.scala:893)
[error]         at scala.swing.SingleRefCollection$$anon$4.foreach(Publisher.scala:108)
[error]         at scala.collection.IterableLike$class.foreach(IterableLike.scala:72)
[error]         at scala.swing.RefSet.foreach(Publisher.scala:165)
[error]         at scala.swing.Publisher$class.publish(Publisher.scala:47)
[error]         at quanto.gui.Document.publish(Document.scala:21)
[error]         at quanto.gui.DerivationDocument.derivation_$eq(DerivationDocument.scala:19)
[error]         at quanto.gui.DerivationController.replaceDerivation(DerivationController.scala:122)
[error]         at quanto.gui.RewriteController$$anonfun$1$$anonfun$applyOrElse$3$$anonfun$apply$1.apply(RewriteController.scala:215)
[error]         at quanto.gui.RewriteController$$anonfun$1$$anonfun$applyOrElse$3$$anonfun$apply$1.apply(RewriteController.scala:208)
[error]         at scala.Option.map(Option.scala:146)
[error]         at quanto.gui.RewriteController$$anonfun$1$$anonfun$applyOrElse$3.apply(RewriteController.scala:208)
[error]         at quanto.gui.RewriteController$$anonfun$1$$anonfun$applyOrElse$3.apply(RewriteController.scala:208)
[error]         at scala.Option.foreach(Option.scala:257)
[error]         at quanto.gui.RewriteController$$anonfun$1.applyOrElse(RewriteController.scala:208)
[error]         at quanto.gui.RewriteController$$anonfun$1.applyOrElse(RewriteController.scala:169)
[error]         at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:36)
[error]         at scala.swing.Reactions$Impl$$anonfun$apply$1.apply(Reactions.scala:23)
[error]         at scala.swing.Reactions$Impl$$anonfun$apply$1.apply(Reactions.scala:23)
[error]         at scala.collection.immutable.List.foreach(List.scala:381)
[error]         at scala.collection.generic.TraversableForwarder$class.foreach(TraversableForwarder.scala:35)
[error]         at scala.collection.mutable.ListBuffer.foreach(ListBuffer.scala:45)
[error]         at scala.swing.Reactions$Impl.apply(Reactions.scala:23)
[error]         at scala.swing.Reactions$Impl.apply(Reactions.scala:17)
[error]         at scala.swing.Publisher$$anonfun$publish$1.apply(Publisher.scala:47)
[error]         at scala.swing.Publisher$$anonfun$publish$1.apply(Publisher.scala:47)
[error]         at scala.collection.Iterator$class.foreach(Iterator.scala:893)
[error]         at scala.swing.SingleRefCollection$$anon$4.foreach(Publisher.scala:108)
[error]         at scala.collection.IterableLike$class.foreach(IterableLike.scala:72)
[error]         at scala.swing.RefSet.foreach(Publisher.scala:165)
[error]         at scala.swing.Publisher$class.publish(Publisher.scala:47)
[error]         at scala.swing.Component.publish(Component.scala:43)
[error]         at scala.swing.AbstractButton$$anonfun$1.apply(AbstractButton.scala:44)
[error]         at scala.swing.AbstractButton$$anonfun$1.apply(AbstractButton.scala:43)
[error]         at scala.swing.Swing$$anon$8.actionPerformed(Swing.scala:38)
[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:6533)
[error]         at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
[error]         at java.awt.Component.processEvent(Component.java:6298)
[error]         at java.awt.Container.processEvent(Container.java:2236)
[error]         at java.awt.Component.dispatchEventImpl(Component.java:4889)
[error]         at java.awt.Container.dispatchEventImpl(Container.java:2294)
[error]         at java.awt.Component.dispatchEvent(Component.java:4711)
[error]         at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
[error]         at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
[error]         at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
[error]         at java.awt.Container.dispatchEventImpl(Container.java:2280)
[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:758)
[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:76)
[error]         at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
[error]         at java.awt.EventQueue$4.run(EventQueue.java:731)
[error]         at java.awt.EventQueue$4.run(EventQueue.java:729)
[error]         at java.security.AccessController.doPrivileged(Native Method)
[error]         at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
[error]         at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
[error]         at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
[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)
hmillerbakewell commented 6 years ago

Has this happened since? The error is in setting the title for the tab, something that may have been fixed when we rewrote parts of the tab management.

hmillerbakewell commented 6 years ago

The UI has been reworked since this bug was reported and this bug cannot be reproduced. Please re-open or create new a new issue if this persists after the next major update (expected before 2018-05-07)