#1 Software exception after disparities initialisation

open-fixed
None
2
2000-09-10
2000-08-11
Anonymous
No

From bobwhatmough@dsto.defence.gov.au (unable to register with illegal character '.' before 'w' in name)

daoi produces a software exception near the end of Matching initialisation. I canthen display the matches or most likely matches by clicking 'Previous' and 'Next', but cannot reach the Matching relaxation process.

Machine is Sun Ultra 60 running SunOS 7 and Java 1.3 and JAI 1.0.2

Traceback follows:

Out class leon.daoi.MatchingRelaxPanel method getMinimaDisparitiesToDisplay()
Exception occurred during event dispatching:
leon.tia.LockedTentativeDisparitiesException: leon.tia.ArrayTentativeDisparities@4a75bb
at leon.tia.AccessEnabledTentativeDisparities.<init>(Unknown Source)
at leon.daoi.MatchingRelaxPanel.repaint(Unknown Source)
at java.awt.Component.reshape(Component.java:1392)
at javax.swing.JComponent.reshape(JComponent.java:3371)
at java.awt.Component.setBounds(Component.java:1373)
at java.awt.CardLayout.layoutContainer(CardLayout.java:312)
at java.awt.Container.layout(Container.java:678)
at java.awt.Container.doLayout(Container.java:668)
at java.awt.Container.validateTree(Container.java:737)
at java.awt.Container.validate(Container.java:719)
at java.awt.CardLayout.next(CardLayout.java:371)
at leon.daoi.ApplicationPanel$OperationSequencerPanel.next(Unknown Source)
at leon.daoi.ApplicationPanel.actionPerformed(Unknown Source)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1254)
at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(AbstractButton.java:1306)
at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(AbstractButton.java:1306)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:382)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:254)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:216)
at java.awt.Component.processMouseEvent(Component.java:3677)
at java.awt.Component.processEvent(Component.java:3506)
at java.awt.Container.processEvent(Container.java:1255)
at java.awt.Component.dispatchEventImpl(Component.java:2563)
at java.awt.Container.dispatchEventImpl(Container.java:1304)
at java.awt.Component.dispatchEvent(Component.java:2466)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:2550)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:2315)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:2218)
at java.awt.Container.dispatchEventImpl(Container.java:1291)
at java.awt.Window.dispatchEventImpl(Window.java:872)
at java.awt.Component.dispatchEvent(Component.java:2466)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:322)
at java.awt.EventDispatchThread.pumpOneEvent(EventDispatchThread.java:107)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:97)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:88)

Any clues?

Discussion

  • Analysis:

    TentativeDisparities can only have one instance of AccessEnabledTentativeDisparities refering to it. If an attempt to add a second one is done, then the former exception is thrown. This typically happens if the garbage collector has not already discarded the first instance when the second one is created.

    A redesign of AccessEnabledTentativeDisparities is necessary in order to fix the problem.

     
    • priority: 5 --> 2
    • assigned_to: nobody --> lebriquer
     
    • status: open --> open-fixed
     
  • Added a garbage collection loop which allows the AccessEnabledTentativeDisparities object to be collected and hence the Tentative Disparities object to be unlocked (and available for another AccessEnabledTentativeDisparities object.)

    Note: the AccessEnabledTentativeDisparities calss has been renamed TentativeDisparitiesLock.