„Hängende Unterfenster“

Fehler in TV-Browser
Antworten
CHF
Full Member
Beiträge: 50
Registriert: 29 Mär 2012, 18:52

„Hängende Unterfenster“

Beitrag von CHF »

Hallo,

ich hole mal ein Thema aus „http://hilfe.tvbrowser.org/viewtopic.ph ... 7&start=30“ wieder hervor, das seit igendeiner 3-er Versiion auftritt und sich bislang nicht gebessert hat:

===================================================================
ds10 hat geschrieben:
CHF hat geschrieben:1) „Unterfenster” hängen beim Schließen
[…] „OK“ schließt ein Unterfenster nicht immer; die darin gemachten Einstellungen werden zwar gespeichert, aber man muß das übergeordnete Fenster oder das ganze Programm schließen, um das Fenster loszuwerden, hängt sonst ewig.
[…] Welche Unterfenster, von welchen Plugins, tritt es zu bestimmten Zeiten auf?
Betroffen sind Unterfenster, in denen beim Speichern noch längere Aktionen stattfinden (Markierungen nach regulären Ausdrücken anbringen,…).
Beispiel: Lieblingssendung neu erstellen oder ändern:
  • Manchmal bleibt beim Schließen des Fensters der „OK“-Knopf gedrückt, danach geschieht nichts mehr, egal wie lange man wartet.
  • Zuweilen hilft es, mit dem „x“-Knopf das Fenster zu schließen.
  • Hilft das nicht, kann es helfen, das übergeordnete Fenster mit „x“ zu schließen, dann geht das Unterfenster mit zu.
  • Hilft das auch nicht, kann es helfen, das ganze Programm zu schließen.
  • Manchmal hilft nur noch, den Java-Prozeß zu killen.
Es scheint damit zu tun zu haben, daß nach oder während der Speicherung der eigentlichen Daten (also zum Beispiel einer Lieblingssendungsdefinition) noch komplexere Aktionen stattfinden, die dann hängenbleiben können. Richtig reproduzierbar ist es nicht, es geschieht oder auch nicht.
===================================================================
CHF hat geschrieben:
ds10 hat geschrieben:
CHF hat geschrieben:Betroffen sind Unterfenster, in denen beim Speichern noch längere Aktionen stattfinden (Markierungen nach regulären Ausdrücken anbringen,…).
Geht denn die Prozessorlast auch hoch oder nicht?
Nein, nicht unbedingt, das kommt darauf an, was gerade gemacht wird und sieht normal aus. Wenn das Problem auftritt, dauert es halt nur ewig, bis das Fenster sich wieder schließt.
ds10 hat geschrieben:Die Fehlerbeschreibung hört sich nämlich eher danach an, dass ein Fehler auftritt der die Ausführung weiterer Abläufe unterbricht, denn sonst müsste sich das Fenster nach einer gewissen Wartezeit schließen.
Das tut es oft auch irgendwann; ich habe jetzt in solchen Fällen mal einfach lange abgewartet; mit den beschriebenen Aktionen kann man das Schließen des Fensters (anscheinend nebenwirkungsfrei) erzwingen, wenn's klappt, von selber dauert es zwischen „ein Bißchen zu lange“ über Minuten bis zu Stunden. Im Augenblick beobachte ich einen krassen Fall mal genauer: seit etwa einer Stunde geht das Fenster (rechte Taste in der Tabelle um eine Sendung als Lieblingssendung einzutragen) schon nicht zu. Es ist wohl ein Daten-Update dazwischengekommen. Die Programm-Ausgabe auf der Konsole bringt keine unerwarteten Meldungen. Man muß dazusagen, daß ich das Programm normalerweise im Hintergrund laufenlasse und nicht alle Nase lang neu starte, den Rechner friere ich über Nacht normalerweise auch nur ein (s2disk). Alles in allem läuft das jedoch extrem langsam.
So, nun habe ich das Phänomen wieder kurz nach einem Programmstart; es liegt also nicht (nur) daran, daß es bereits lange läuft, sondern kann unabhängig davon auftreten. In diesem Fall ist die CPU-Last auch zeitweise höher gewesen. Das „hängende“ Fenster blieb mit „eingedrücktem“ OK-Knopf ewig lange im Vordergrund und schloß sich, sobald ich das aufrufende Fenster geschlossen habe. Die Version ist 3.3.1 (nicht mehr Beta). Hier die Threads:

Code: Alles auswählen

killall -QUIT java
2013-07-27 00:37:50
Full thread dump Java HotSpot(TM) Server VM (20.1-b02 mixed mode):

"Store settings periodically" prio=10 tid=0x09158400 nid=0x7c47 waiting on condition [0xaa0f7000]
   java.lang.Thread.State: TIMED_WAITING (sleeping)
        at java.lang.Thread.sleep(Native Method)
        at tvbrowser.TVBrowser$3.run(TVBrowser.java:721)

"Timer-0" prio=10 tid=0x090a9400 nid=0x192 in Object.wait() [0xaa55c000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        at java.util.TimerThread.mainLoop(Timer.java:509)
        - locked <0xbf4925d8> (a java.util.TaskQueue)
        at java.util.TimerThread.run(Timer.java:462)

"Thread-5" daemon prio=10 tid=0x09240400 nid=0x7f37 waiting on condition [0xab3ad000]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0xb7772878> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
        at java.util.concurrent.ArrayBlockingQueue.take(ArrayBlockingQueue.java:317)
        at sun.awt.X11.XTrayIconPeer$Balloon$Displayer.run(XTrayIconPeer.java:937)

"TimerQueue" daemon prio=10 tid=0x092a8000 nid=0x7f36 in Object.wait() [0xac4fe000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        at javax.swing.TimerQueue.run(TimerQueue.java:232)
        - locked <0xb5feab38> (a javax.swing.TimerQueue)
        at java.lang.Thread.run(Thread.java:662)

"DestroyJavaVM" prio=10 tid=0xf5705400 nid=0x7e43 waiting on condition [0x00000000]
   java.lang.Thread.State: RUNNABLE

"AWT-EventQueue-1" prio=10 tid=0xab0f7800 nid=0x7e5e in Object.wait() [0xaa5ab000]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        at java.lang.Object.wait(Object.java:485)
        at java.awt.EventQueue.getNextEvent(EventQueue.java:484)
        - locked <0xb3b1e038> (a util.ui.textcomponentpopup.TextComponentPopupEventQueue)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:236)
        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:1584)
        at java.awt.Component.setVisible(Component.java:1536)
        at java.awt.Window.setVisible(Window.java:842)
        at java.awt.Dialog.setVisible(Dialog.java:986)
        at util.ui.UiUtilities.centerAndShow(UiUtilities.java:158)
        at util.ui.SearchHelper.doSearch(SearchHelper.java:263)
        at util.ui.SearchHelper.search(SearchHelper.java:127)
        at util.ui.SearchHelper.search(SearchHelper.java:141)
        at tvbrowser.extras.searchplugin.SearchDialog.search(SearchDialog.java:193)
        at tvbrowser.extras.searchplugin.SearchDialog.access$100(SearchDialog.java:63)
        at tvbrowser.extras.searchplugin.SearchDialog$3.actionPerformed(SearchDialog.java:135)
        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.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
        at java.awt.Component.processMouseEvent(Component.java:6288)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
        at java.awt.Component.processEvent(Component.java:6053)
        at java.awt.Container.processEvent(Container.java:2041)
        at java.awt.Component.dispatchEventImpl(Component.java:4651)
        at java.awt.Container.dispatchEventImpl(Container.java:2099)
        at java.awt.Component.dispatchEvent(Component.java:4481)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
        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:4481)
        at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:643)
        at java.awt.EventQueue.access$000(EventQueue.java:84)
        at java.awt.EventQueue$1.run(EventQueue.java:602)
        at java.awt.EventQueue$1.run(EventQueue.java:600)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
        at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
        at java.awt.EventQueue$2.run(EventQueue.java:616)
        at java.awt.EventQueue$2.run(EventQueue.java:614)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:613)
        at util.ui.textcomponentpopup.TextComponentPopupEventQueue.dispatchEvent(TextComponentPopupEventQueue.java:55)
        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:1584)
        at java.awt.Component.setVisible(Component.java:1536)
        at java.awt.Window.setVisible(Window.java:842)
        at java.awt.Dialog.setVisible(Dialog.java:986)
        at util.ui.UiUtilities.centerAndShow(UiUtilities.java:158)
        at tvbrowser.extras.searchplugin.SearchPlugin.openSearchDialog(SearchPlugin.java:291)
        at tvbrowser.extras.searchplugin.SearchPlugin.openSearchDialog(SearchPlugin.java:295)
        at tvbrowser.extras.searchplugin.SearchPlugin$3.actionPerformed(SearchPlugin.java:201)
        at devplugin.ButtonAction.actionPerformed(ButtonAction.java:70)
        at tvbrowser.ui.mainframe.toolbar.ToolBar$11.actionPerformed(ToolBar.java:617)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
        at util.ui.PopupButton.fireActionPerformed(PopupButton.java:53)
        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.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
        at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:273)
        at java.awt.Component.processMouseEvent(Component.java:6288)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
        at java.awt.Component.processEvent(Component.java:6053)
        at java.awt.Container.processEvent(Container.java:2041)
        at java.awt.Component.dispatchEventImpl(Component.java:4651)
        at java.awt.Container.dispatchEventImpl(Container.java:2099)
        at java.awt.Component.dispatchEvent(Component.java:4481)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
        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:4481)
        at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:643)
        at java.awt.EventQueue.access$000(EventQueue.java:84)
        at java.awt.EventQueue$1.run(EventQueue.java:602)
        at java.awt.EventQueue$1.run(EventQueue.java:600)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
        at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
        at java.awt.EventQueue$2.run(EventQueue.java:616)
        at java.awt.EventQueue$2.run(EventQueue.java:614)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:613)
        at util.ui.textcomponentpopup.TextComponentPopupEventQueue.dispatchEvent(TextComponentPopupEventQueue.java:55)
        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)

"pool-1-thread-2" prio=10 tid=0xab7dac00 nid=0x7e5d waiting on condition [0xaa5fe000]
   java.lang.Thread.State: TIMED_WAITING (sleeping)
        at java.lang.Thread.sleep(Native Method)
        at tvbrowser.core.plugin.PluginProxyManager$5.run(PluginProxyManager.java:1323)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:662)

"pool-1-thread-1" prio=10 tid=0xab537800 nid=0x7e5c waiting on condition [0xaa95c000]
   java.lang.Thread.State: TIMED_WAITING (sleeping)
        at java.lang.Thread.sleep(Native Method)
        at tvbrowser.core.plugin.PluginProxyManager$5.run(PluginProxyManager.java:1323)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:662)

"Thread-3" prio=10 tid=0xaad0c400 nid=0x7e5b waiting on condition [0xaa9ad000]
   java.lang.Thread.State: TIMED_WAITING (sleeping)
        at java.lang.Thread.sleep(Native Method)
        at personatimeswitcher.PersonaTimeSwitcher$1.run(PersonaTimeSwitcher.java:83)

"Thread-1" prio=10 tid=0xab4c3c00 nid=0x7e59 waiting on condition [0xab35c000]
   java.lang.Thread.State: TIMED_WAITING (sleeping)
        at java.lang.Thread.sleep(Native Method)
        at soundreminder.SoundReminder$2.run(SoundReminder.java:271)

"AWT-Shutdown" prio=10 tid=0xab0f9c00 nid=0x7e56 in Object.wait() [0xab9ce000]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        at java.lang.Object.wait(Object.java:485)
        at sun.awt.AWTAutoShutdown.run(AWTAutoShutdown.java:265)
        - locked <0xb35d3570> (a java.lang.Object)
        at java.lang.Thread.run(Thread.java:662)

"AWT-XAWT" daemon prio=10 tid=0xada7a800 nid=0x7e4f runnable [0xad5fe000]
   java.lang.Thread.State: RUNNABLE
        at sun.awt.X11.XToolkit.waitForEvents(Native Method)
        at sun.awt.X11.XToolkit.run(XToolkit.java:579)
        at sun.awt.X11.XToolkit.run(XToolkit.java:543)
        at java.lang.Thread.run(Thread.java:662)

"Java2D Disposer" daemon prio=10 tid=0xadaaec00 nid=0x7e4e in Object.wait() [0xad776000]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:118)
        - locked <0xb35cf760> (a java.lang.ref.ReferenceQueue$Lock)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:134)
        at sun.java2d.Disposer.run(Disposer.java:127)
        at java.lang.Thread.run(Thread.java:662)

"Low Memory Detector" daemon prio=10 tid=0xf57cfc00 nid=0x7e4c runnable [0x00000000]
   java.lang.Thread.State: RUNNABLE

"C2 CompilerThread1" daemon prio=10 tid=0xf57ce000 nid=0x7e4b waiting on condition [0x00000000]
   java.lang.Thread.State: RUNNABLE

"C2 CompilerThread0" daemon prio=10 tid=0xf57cc000 nid=0x7e4a waiting on condition [0x00000000]
   java.lang.Thread.State: RUNNABLE

"Signal Dispatcher" daemon prio=10 tid=0xf57ca800 nid=0x7e49 waiting on condition [0x00000000]
   java.lang.Thread.State: RUNNABLE

"Finalizer" daemon prio=10 tid=0xf57bc800 nid=0x7e48 in Object.wait() [0xade94000]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:118)
        - locked <0xb33fcfb0> (a java.lang.ref.ReferenceQueue$Lock)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:134)
        at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159)

"Reference Handler" daemon prio=10 tid=0xf57b7c00 nid=0x7e47 in Object.wait() [0xadee5000]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        at java.lang.Object.wait(Object.java:485)
        at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:116)
        - locked <0xb33fcf88> (a java.lang.ref.Reference$Lock)

"VM Thread" prio=10 tid=0xf57b4000 nid=0x7e46 runnable 

"GC task thread#0 (ParallelGC)" prio=10 tid=0xf570c400 nid=0x7e44 runnable 

"GC task thread#1 (ParallelGC)" prio=10 tid=0xf570dc00 nid=0x7e45 runnable 

"VM Periodic Task Thread" prio=10 tid=0xf57d1c00 nid=0x7e4d waiting on condition 

JNI global references: 20615

Heap
 PSYoungGen      total 330112K, used 64790K [0xdd1b0000, 0xf2700000, 0xf2700000)
  eden space 316352K, 20% used [0xdd1b0000,0xe10f5a70,0xf06a0000)
  from space 13760K, 0% used [0xf06a0000,0xf06a0000,0xf1410000)
  to   space 17280K, 0% used [0xf1620000,0xf1620000,0xf2700000)
 PSOldGen        total 699072K, used 615918K [0xb2700000, 0xdd1b0000, 0xdd1b0000)
  object space 699072K, 88% used [0xb2700000,0xd807b8a8,0xdd1b0000)
 PSPermGen       total 31360K, used 30119K [0xae700000, 0xb05a0000, 0xb2700000)
  object space 31360K, 96% used [0xae700000,0xb0469cb8,0xb05a0000)
===================================================================[/color]
Neue Information: Ob das Fenster doch noch zugeht, erkennt man daran, daß irgendwann der Zeitpunkt kommt, wo der Rest des Programmes wieder reagiert. Kann man das hängende Fenster also beiseiteschieben und im Hauptfenster eine neue Aktion starten, die ein anderes Unterfenster öffnet, dann wird das hängende Fenster nicht mehr verschwinden.
ds10
Site Admin
Beiträge: 19101
Registriert: 23 Jun 2005, 12:36
Kontaktdaten:

Re: „Hängende Unterfenster“

Beitrag von ds10 »

3.3.1 ist aber keine Version, an der ich Debuggen werde, denn aktuell ist 3.4 und nur an dieser wird entwickelt und 3.3.1 ist schon seit September letzten Jahres abgelöst.
"First they ignore you, then they ridicule you, then they fight you, then you win." - Mahatma Gandhi
Unterstütze die Weiterentwicklung von TV-Browser
CHF
Full Member
Beiträge: 50
Registriert: 29 Mär 2012, 18:52

Re: „Hängende Unterfenster“

Beitrag von CHF »

Ich habe das „aufgewärmt“, weil es sich seit jener Version nicht geändert hat, sondern in 3.4 immer noch auftritt.

Zum Nachstellen des Problems:
  1. Neue Lieblingssendung anlegen.
  2. „Lieblingssendung verwalten“ aus dem Kontextmenü auswählen.
  3. Eigenschaften bearbeiten.
  4. Eine Aktion wählen, die ein Unterfenster öffnet, beispielsweise eine Markierung anbringen.
  5. Drückt man in jenem neuen Unterfenster nach dem Ändern einer Einstellung OK, kann es sein, daß es nicht mehr geschlossen wird. Man erkennt das daran, daß das Programm ansonsten wieder reagiert, die gewünschte Aktion (Markierung,…) auch ausgeführt wurde, aber das Unterfenster mit eingedrücktem OK-Knopf offen bleibt.
  6. Wenn stattdessen alles normal verläuft, wiederhole ab Punkt 1 oder 3, bis es passiert; wenn es dann passiert, kann man das Fenster durch Schließen desjenigen, von dem aus es geöffnet worden ist, doch noch zumachen. Deswegen habe ich oben Punkt 2 „zwischengeschaltet“: macht man das Hauptfenster für die Lieblingssendungen zu, verschwinden auch alle hängenden Unterfenster.
Man kann zum Beispiel verschiedene Markierungen definieren, zwischen denen man dann bei Wierderholung von Punkt 3 wechselt, bis das Fenster mal nicht zugeht. Es hilft womöglich beim Hervorrufen, wenn viele Daten zu durchsuchen sind, also nicht nur ganz wenige Sender definiert sind.
Antworten