assertj / assertj/assertj-swing

Failures due to stopped timers in org.fest.swing.monitor.Windows

オープン
#32 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る
bug Critical import from fest-swing
主要言語
Java
スター
121
フォーク
52
PR マージ指標
30日以内にマージされた PR はありません

説明

_Issue by **[Martin Ginkel](http://jira.codehaus.org/secure/ViewProfile.jspa?name=mginkel)** from Tue, 18 May 2010 04:07:14 -0500_
_Originally opened as http://jira.codehaus.org/browse/FEST-346_

---

After the start of some GUI test an exception occurs (stacktrace below) and repeats a couple of times.

As far as I can tell, my test has no problems. At that point it is opening and closing

modal dialogs that display a progress-spinner in front of the main UI.

The problem happened 3 times on our CI system but is not reliably reproducable

(the other test runs were just fine).

The timer-thread that is apparently cancelled here, can only get to this state by being finalize()ed.

This is very strange, if the org.fest.swing.monitor.Windows is still alive. The junit test has just started, is working with a Robot.robotWithNewAwtHierarchy() within the first @Test method.


java.lang.IllegalStateException: Timer already cancelled.

at java.util.Timer.sched(Timer.java:354)
at java.util.Timer.schedule(Timer.java:170)
at org.fest.swing.monitor.Windows.markAsShowing(Windows.java:100)
at org.fest.swing.monitor.ContextMonitor.recognizeAsOpenWindow(ContextMonitor.java:92)
at org.fest.swing.monitor.ContextMonitor.processEvent(ContextMonitor.java:83)
at org.fest.swing.monitor.ContextMonitor.eventDispatched(ContextMonitor.java:64)
at org.fest.swing.listener.WeakEventListener.eventDispatched(WeakEventListener.java:80)
at java.awt.Toolkit$SelectiveAWTEventListener.eventDispatched(Toolkit.java:2353)
at java.awt.Toolkit$ToolkitEventMulticaster.eventDispatched(Toolkit.java:2244)
at java.awt.Toolkit$ToolkitEventMulticaster.eventDispatched(Toolkit.java:2244)
at java.awt.Toolkit$ToolkitEventMulticaster.eventDispatched(Toolkit.java:2244)
at java.awt.Toolkit$ToolkitEventMulticaster.eventDispatched(Toolkit.java:2244)
at java.awt.Toolkit$ToolkitEventMulticaster.eventDispatched(Toolkit.java:2244)
at java.awt.Toolkit$ToolkitEventMulticaster.eventDispatched(Toolkit.java:2244)
at java.awt.Toolkit.notifyAWTEventListeners(Toolkit.java:2203)
at java.awt.Component.dispatchEventImpl(Component.java:4528)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:178)
at java.awt.Dialog$1.run(Dialog.java:1046)
at java.awt.Dialog$3.run(Dialog.java:1098)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.Dialog.show(Dialog.java:1096)
at java.awt.Component.show(Component.java:1563)
at java.awt.Component.setVisible(Component.java:1515)
at java.awt.Window.setVisible(Window.java:842)
at java.awt.Dialog.setVisible(Dialog.java:986)
at genedata.screener.common.awt.BusyProgressDialog$2.run(BusyProgressDialog.java:119)
at genedata.util.threads.Threads.invokeInEDTAndWait(Threads.java:129)
at genedata.screener.common.awt.BusyProgressDialog.showDialog(BusyProgressDialog.java:115)
at genedata.screener.common.awt.DefaultProcessingHandler.showModalDialogAndWait(DefaultProcessingHandler.java:347)
at genedata.screener.common.awt.DefaultProcessingHandler.access$500(DefaultProcessingHandler.java:59)
at genedata.screener.common.awt.DefaultProcessingHandler$4.run(DefaultProcessingHandler.java:279)
at genedata.util.threads.Threads.invokeInEDTAndWait(Threads.java:129)
at genedata.screener.common.awt.DefaultProcessingHandler.runWithProgress(DefaultProcessingHandler.java:265)
at genedata.screener.common.awt.DefaultProcessingHandler.runWithSpinner(DefaultProcessingHandler.java:196)
at genedata.screener.common.gui.definition.EditExperimentWizardState.setCorporateIdentifierAndLoadAnnotationSchemes(EditExperimentWizardState.java:245)
at genedata.screener.aa.mgmnt.io.RawDataLoadingContext$1.promptForTarget(RawDataLoadingContext.java:74)
at genedata.screener.aa.mgmnt.io.IOManager.doLoad(IOManager.java:297)
at genedata.screener.aa.mgmnt.io.IOManager.loadExperimentData(IOManager.java:171)
at genedata.screener.aa.mgmnt.io.IOManager.loadRawData(IOManager.java:167)
at genedata.screener.aa.gui.actions.LoadExperimentDataFromFileAction.handledActionPerformed(LoadExperimentDataFromFileAction.java:28)
at genedata.screener.common.awt.actions.AbstractHandledAction.actionPerformed(AbstractHandledAction.java:31)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.AbstractButton.doClick(AbstractButton.java:357)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1223)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1264)
at java.awt.Component.processMouseEvent(Component.java:6263)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6028)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

---

votes (original issue): 0
watches (original issue): 0

コントリビューションガイド

コントリビューションガイドを開く

調査の方向性

org.fest.swing.monitor.Windows.markAsShowing から始め、次にスタックトレースに示されている ContextMonitor の呼び出しを追ってください。Windows が存続している間に timer がキャンセル済み状態になる経路を調査し、報告されているモーダルダイアログと進捗スピナーのシナリオを使って再現してください。GUI テストで Timer already cancelled exception がスローされたり繰り返されたりしなくなれば完了です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
java
領域
desktop, testing-qa
issue の種類
バグ
難易度
4/5
見積もり時間
3〜5日
活発さ
停滞
明瞭さ
説明が足りない
初心者へのやさしさ
35/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。