Programm hängt in der Ereigniswarteschlange

kodela

Bekanntes Mitglied
Hallo,

ein Programm von mir, welches seit Jahren in Verwendung ist, aber immer wieder mehr oder weniger umfangreich modifiziert wird, bleibt plötzlich nach der Behandlung eines Ereignisses (neue Str8ts-Aufgabe eintragen) in einer Ereigniswarteschlange hängen. Beim Debuggen kommt nach
Java:
        strBoard.requestFocusInWindow();
        repaint();
folgende Fehlermeldung:

Thread AWT-EventQueue-0 stopped at Unsafe.java.park.

Was kann dafür ursächlich sein?

Gruß, kodela
 

Thallius

Top Contributor
Da hast du wahrscheinlich ein Problem mit dem Threadding. Was das jetzt ist wird nicht einfach herauszufinden. Wahrscheinlich schreibst du von mehreren Threads aus auf die gleiche Variable (Objekt) und das crashed je nach timing dann.
 

thet1983

Top Contributor
schreib dir sysouts zum anfang und zum ende jeder methode.
Java:
public void doIt(){
   System.out.println("start der methode doIt");
   //.. code
  System.out.println("methode doIt fertig");
}
so kannst du das besser visualisieren wo er hängt...( debugger wäre aber besser )
 

kodela

Bekanntes Mitglied
Danke für die Hinweise.

@mrBrown: Nur Info des Debuggers (von NetBeans). Bin auf der Suche nach der Ursache. Was könnte als Auslöser in Betracht kommen?
Mittlerweile habe ich über die Stackanalyse die Stelle gefunden, an der das Programm angehalten wird. Es bringt jetzt nichts, wenn ich den ganzen Code poste, will es aber kurz beschreiben:

Über ein Schaltsymbol oder über eine Menüoption wird die Methode für die Eingabe eines Str8ts aufgerufen. auf ggleichem Weg wird die Eingabe abgeschlossen. Die Methode für die Eingabe wird erneut aufgerufen und erkennt, dass die Eingabe beendet ist. Über diverse Submethoden wird nun die Eingabe überprüft und gelöst. Falls ein Eingabefehler vorliegt oder die Aufgabe selbst fehlerhaft ist, erfolgt ein Rückspung mit 0, ansonsten mit 1.

Über den Stack erkannte ich, dass das Programm in einer der Auswertmethoden angehalten wurde, konnte dorthin gehen und die Ausführung schrittweise fortsetzen, dabei auch feststellen, dass die Eingabe fehlerfrei war und gelöst wurde. Nach einigen Verwaltungsaufgaben erfolgte der Rücksprung zur aufrufenden Hauptmethode. Hier wurde die Ausführung erneut angehalten, diesmal verschwand aber die Positionsmarkierung für die aktuelle Codezeile und es ging nichts mehr.

Hier die letzten Zeilen aus der Debugger Console:
Code:
Thread AWT-EventQueue-0 stopped after return from 'checkStr8ts()' at Str8tsApp.java:596.
User program running
Thread AWT-EventQueue-0 stopped at Str8tsApp.java:597.
User program running
Thread AWT-EventQueue-0 stopped at Str8tsApp.java:599.
User program running
Thread AWT-EventQueue-0 stopped at Str8tsApp.java:600.
User program running
Thread AWT-EventQueue-0 stopped at Unsafe.java.park.
User program running
Hier noch die zugehörigen Codezeilen:
Java:
            int n = str.checkStr8ts();
            EingabeBeendenDialog dlg = new EingabeBeendenDialog(this);
            // gibt es eine eindeutige Lösung
            if (n == 1) {
                statusBarHinweis.setText("Neue Aufgabe mit "
                        + str.getVorgabewerte() + " Vorgabewerten eingegeben.");
            }
Die erste Zeile ist die Zeile 596, von der aus der Aufruf der Submethode checkStr8ts erfolgt, von der wiederum weitere Methoden zur Auswertung aufgerufen werden.

Bei früheren Versuchen lief die Auswertung einige Zeilen weiter (siehe meinen ersten Beitrag).
 
Zuletzt bearbeitet:

kodela

Bekanntes Mitglied
Hallo,

Problem zwar noch nicht gelöst, aber das ist nur noch eine Zeitfrage.

Dadurch, dass bei meinem letzten Versuch das Prgramm nicht, wie eigentlich sonst immer, am Ende der Eingabemethode hängen blieb, sondern beim Rücksprung aus den Auswertemodulen, entfernte ich den gesamten Code vom Rücksprungspunkt bis zu den letzten beiden Zeilen (siehe mein erster Beitrag) und siehe da, das Programm blieb nicht mehr hängen.

Eigenartig ist nur, dass ich den Code für die Eingabemethode schon seit fünf Jahren, zuerst für mein sudoku-Programm, jetzt für das Str8ts-Programm verwende, ohne dass ich etwas verändert hätte. Die Eingabemethode für das Str8ts-Programm funktionierte bis vor etwa einer Woche auch noch einwandfrei. Da konnte allerdings die Aufgabe zwar geprüft, aber noch nicht gelöst werden. Das Modul für die Lösung funktioniert allerdings auch einwandfrei, zum Beispiel, wenn es von der Methode für das Editieren einer Aufgabe aufgerufen wird. Gerade diese Methode ist nahezu identisch mit der Methode für die Eingabe einer neuen Aufgabe.

Na ja, einen Grund für dieses eigenartige Verhalten muss es ja geben. Da habe ich etwas zu suchen.

Nochmals Danke für Eure Hilfe,

kodela
 

kodela

Bekanntes Mitglied
@JuKu
Ja, ich benutze neben dem Hauptteil noch Threads für den Ausdruck, das Erzeugen einer Serie, der Zeitanzeige und den Update Check. Während der Zeit, in der dieser "Hänger" auftritt, läuft nur noch der Thread für die Zeit, den ich allerdings auch stoppen könnte. Mein Sudoku Programm, aus dem ich das Str8ts Programm entwickle, kann von meiner Homepage heruntergeladen werden (mit oder ohne Quellcode).

Hier der für den Abschluss einer Eingabe einer neuen Str8ts Aufgabe wesentliche Code:
Java:
        else {
            // Bearbeitung soll beendet werden
            symLeisteStrEingabe.setSelected(true);
            boolean beenden = false;
            int n = str.checkStr8ts();
            EingabeBeendenDialog dlg = new EingabeBeendenDialog(this);
            // gibt es eine eindeutige Lösung
            if (n == 1) {
                statusBarHinweis.setText("Neue Aufgabe mit "
                        + str.getVorgabewerte() + " Vorgabewerten eingegeben.");
            }
            else {
                int m = 0;
                if (n < 1) {
                    m = dlg.zeigeDialog(
                            "Diese Aufgabe kann nicht gelöst werden."
                            + "Sie ist möglicherweise fehlerhaft.", false);
                }
                if (m == dlg.ABBRUCH) {
                    abbruch = true;
                    beenden = true;
                    ladenKonfiguration(false, false);
                }
            }
//            if (beenden) {
                if (!abbruch) {
                    strName = unbenannt;
                    zeigeKndTmp = false;
                    setFilterButtons(0);
                    setFehler(0);
                    setTipps(0);
                    setZeigeKnd(false);
                    setFilter(0);
                    setNaviOptionen(false, false, false, false, true);
                    setStartZeit(0);
                    str.uebernehmeNeueAufgabe();
                }
                resetBearbeitungsModus(true);
//           }
        }
        strBoard.requestFocusInWindow();
        repaint();
    }
Die beiden im unteren Teil auskommentierten Zeilen für die if-Abfrage sollten eigentlich aktiv sein, doch wenn dies der Fall ist, tritt der "Hänger" auf. Er tritt selbst dann auf, wenn ich den kompletten Code für die if-Bedingung auskommentiere, die if-Abfrage jedoch nicht. Daraus schließe ich, dass die Ursache des Problems nicht in dem vorstehend gezeigten Codebereich, sondern außerhalb liegt. Es muss um Zusammenhang mit der Lösung der eingegebenen Str8ts Aufgabe "implementiert" worden sein, denn bevor ich die Methode für die Lösung eingebunden habe, konnte ich problemlos neue Str8ts eingeben.

Eigenartig ist allerdings, dass ich auf fast identische Weise für das Editieren einer Str8ts Aufgabe zeitgleich ebenfalls die Lösungserstellung eingebunden habe, dort ohne Probleme.

Gruß, kodela
 

kodela

Bekanntes Mitglied
@Thallius
Im Auskommentierten Teil ändere ich überhaupt nichts. Auskommentiert ist nur die if-Abfrage. Man könnte auch den gesamten Teil innerhalb des if-Blockes entfernen, dann hätte man eine leere if-Abfrage und auch dann, bzw. gerade dann, tritt der Hänger auf.
 

mrBrown

Super-Moderator
Mitarbeiter
Arbeitest du irgendwo direkt mit der EventQueue?
Lockst du irgendwo irgendwelche Dinge?

Hast du das testweise mal ohne die anderen Threads laufen lassen?

Mal nen ThreadDump gemacht, damit man mal den Stacktrace sieht?
 

mrBrown

Super-Moderator
Mitarbeiter
Arbeitest du irgendwo direkt mit der EventQueue?
Lockst du irgendwo irgendwelche Dinge?

Hast du das testweise mal ohne die anderen Threads laufen lassen?

Mal nen ThreadDump gemacht, damit man mal den Stacktrace sieht?
 

kodela

Bekanntes Mitglied
@mrBrown
ich habe den gesamten Teil der Eingabeauswertung in einen try-Block gelegt, um im anschließenden catch-Block mit e.printStackTrace() an die benötigen Infos zu kommen. Was geschah, nichts. Es wurde keine Exception geworfen, es funktionierte alles. Das Konstrukt try/catch wieder entfernt und es funktioniert auch. Ich hoffe, es bleibt so, werde aber alle Teile noch gründlich prüfen. Die Wahrscheinlichkeit, dass irgend wo etwas nicht ganz sauber ist, scheint mir doch sehr groß zu sein.

Danke allen, die sich die Zeit genommen haben, mir zu helfen.

Gruss, kodela
 

mrBrown

Super-Moderator
Mitarbeiter
ich habe den gesamten Teil der Eingabeauswertung in einen try-Block gelegt, um im anschließenden catch-Block mit e.printStackTrace() an die benötigen Infos zu kommen. Was geschah, nichts. Es wurde keine Exception geworfen, es funktionierte alles. Das Konstrukt try/catch wieder entfernt und es funktioniert auch. Ich hoffe, es bleibt so, werde aber alle Teile noch gründlich prüfen. Die Wahrscheinlichkeit, dass irgend wo etwas nicht ganz sauber ist, scheint mir doch sehr groß zu sein.
Es fliegt ja auch keine Exception, warum sollte da auch eine fliegen?
Du hast doch selbst gesagt, dass das Programm an der Stelle einfach hängt.


Wenn es jetzt funktioniert, würde ich mal nachgucken was du wirklich allen geändert hast.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Tiago1234 Warum hängt sich mein Programm auf? Allgemeine Java-Themen 22
N Quicksort Programm hängt sich auf Allgemeine Java-Themen 6
S Programm hängt sich manchmal (selten) auf Allgemeine Java-Themen 9
P Threads Programm hängt Allgemeine Java-Themen 9
Jats Programm mit CMD Befehl hängt sich auf oder gibt error = 5 aus Allgemeine Java-Themen 4
T Programm hängt sich auf Allgemeine Java-Themen 14
Jose05 Umgang mit Exceptions in einen Programm Allgemeine Java-Themen 2
E Output Fehler (Java-Programm Kuchen) Allgemeine Java-Themen 11
S Java Programm lässt sich vom USB-Stick starten, aber nicht von HDD Allgemeine Java-Themen 16
R Programm führt Methoden gleichzeitig aus Allgemeine Java-Themen 2
T Der Aufruf von CMD-Programm Allgemeine Java-Themen 30
A Java Programm erstellen hilfe Allgemeine Java-Themen 10
Mike80 Processing Programm fiert ohne Arduino ein Allgemeine Java-Themen 2
B Mysteriöse Ergebnisse beim Baccarat Programm? Allgemeine Java-Themen 13
districon Programm zum Durchsuchen von (Ebay-)Artikeln Allgemeine Java-Themen 1
T Addons im eigenen Programm Allgemeine Java-Themen 1
Calli11 Was muss ich hier in die Main schreiben, damit das Programm ausgeführt wird? Allgemeine Java-Themen 4
S .exe Datei/Programm auslesen? Allgemeine Java-Themen 2
S Formel für Sonnenwinkel in ein Programm überführen Allgemeine Java-Themen 11
Alex_99 Programm stürzt beim Aufruf der Funktion ab? Text ausgeben Allgemeine Java-Themen 45
B Java Programm auf virutellem Desktop laufen lassen? Allgemeine Java-Themen 1
L Java überprüfen lassen, ob sich ein gegebener Pfad / das Programm an sich auf einer CD oder Festplatte befindet Allgemeine Java-Themen 14
D Programm designen Allgemeine Java-Themen 1
S Folgendes Problem bei einem Programm Allgemeine Java-Themen 1
J c Programm läuft nicht in compilierter Version des Java Projektes Allgemeine Java-Themen 7
O 2D-Grafik BioFarben-Programm soll auf Vollbild schalten Allgemeine Java-Themen 1
S Nachrichten Filter Programm Allgemeine Java-Themen 14
S Programm schreiben, das mir aufgrund von Schlagwörtern, die ich im Internet suche, relevante Themen sofort anzeigt. Allgemeine Java-Themen 1
T Hilfe bei Programm. IDE: Eclipse mit EV3-Plugin, lejos Allgemeine Java-Themen 8
Lukas2904 Swing Anzeigen lassen das das Programm geschlossen wurde Allgemeine Java-Themen 3
TechnikTVcode Mail Programm Allgemeine Java-Themen 2
S Programm entwickeln, welches ein Dreieckspuzzle lösen kann Allgemeine Java-Themen 5
R Lesen von Interfaces (Programm Vervollständigen) Allgemeine Java-Themen 10
Dann07 Java-Programm findet DLLs nicht! Allgemeine Java-Themen 20
OSchriever Linux-Programm öffnen Allgemeine Java-Themen 6
P USER Management in SQL übergreifend auf JAVA Programm Allgemeine Java-Themen 41
L Eclipse Konsole im exportierten Programm Allgemeine Java-Themen 2
OSchriever Programm über Linux-Kommandozeile ausführen Allgemeine Java-Themen 20
D Verkauf von einem Programm welches ich in Java geschrieben habe Allgemeine Java-Themen 4
M Programm erkennt String aus .txt Datei nicht Allgemeine Java-Themen 3
P Erstelltes Programm ist doppelt so groß Allgemeine Java-Themen 11
N Programm nach Abschluss neustarten lassen Allgemeine Java-Themen 6
S Einfaches Programm programmieren Allgemeine Java-Themen 5
M kleines KI Programm Idee Allgemeine Java-Themen 7
D Boolean von ein anderem Java Programm während der Laufzeit ändern Allgemeine Java-Themen 23
L Excel Datei löscht sich selbst im Programm - Java Allgemeine Java-Themen 3
I File ausführen und mein Programm bearbeiten lassen Allgemeine Java-Themen 11
ralfb1105 Starten Java App(s) (.jar) aus einem Java Programm Allgemeine Java-Themen 18
temi Java Programm aus einer DB laden und starten Allgemeine Java-Themen 2
N Programm startet nicht, nur per cmd Allgemeine Java-Themen 5
J Programm zum Suchen eines Wortes im Dateisystem Allgemeine Java-Themen 4
E Java Programm mit Clients erweitern - Möglichkeiten? Allgemeine Java-Themen 2
Joker4632 Methoden Befehl an bereits extern geöffnete Programm-spezifische Konsole senden Allgemeine Java-Themen 1
M Dieses Programm schneller machen? Allgemeine Java-Themen 2
R Programm zur Rekursion Allgemeine Java-Themen 5
S Compiler-Fehler Programm verhält sich in Eclipse anders Allgemeine Java-Themen 1
B Input/Output Programm zum Auslesen/Beschreiben von Textdateien, wie Geschwindigkeit erhöhen? Allgemeine Java-Themen 18
dereki2000 Programm veröffentlichen Allgemeine Java-Themen 14
mrbig2017 Threads Chat Programm mit Threads? Allgemeine Java-Themen 2
M Suche aktuelle Apache Poi Bibliothek zum Einbinden in mein Programm Allgemeine Java-Themen 2
J Java "Bank Programm" Brauche eure Hilfe Allgemeine Java-Themen 3
S Java Programm (Spiel mit den Boxen) Allgemeine Java-Themen 1
A Java Programm verbessern/vereinfachen Allgemeine Java-Themen 20
P Programm darf nicht mehrfach startbar sein Allgemeine Java-Themen 16
JavaNewbie2.0 Programm nicht im Taskmanager schliesen können Allgemeine Java-Themen 15
J XML Datei mit installiertem Programm öffnen Allgemeine Java-Themen 7
Arif Input/Output Dateien im Jar-Programm speichern Allgemeine Java-Themen 12
H Java FX 2 Fragen um Programm in mehrere sprachen zu übersetzen in Gluon Framwork Allgemeine Java-Themen 3
JavaNewbie2.0 Programm bleibt "stehen" Allgemeine Java-Themen 2
JavaNewbie2.0 Start eines Anderen Programm erkennen Allgemeine Java-Themen 6
E Mit Java ein Python Programm starten Allgemeine Java-Themen 20
Q-bert Daten von Java Programm speichern Allgemeine Java-Themen 4
Aruetiise Methoden .jar mit Programm öffnen Allgemeine Java-Themen 2
C anderes Programm schließen! Allgemeine Java-Themen 5
C Webseiten Programm problem Allgemeine Java-Themen 5
E Programm auf Installation prüfen Allgemeine Java-Themen 1
J Programm zum Download von CSV-Dateien Allgemeine Java-Themen 4
E Programm ohne Windowsrand(Vollbild) ? Allgemeine Java-Themen 5
G Programm, das nach abgearbeiteter main Methode weiterläuft Allgemeine Java-Themen 72
P Schnittstelle java Programm zu Webserver / Browser Allgemeine Java-Themen 2
J Schutz Programm Jar Exe Allgemeine Java-Themen 7
R javax.comm --> Programm funktioniert nach Export nicht mehr Allgemeine Java-Themen 0
Blender3D Java Swing Programm Windows 10 Autostart Problem Allgemeine Java-Themen 2
U Input/Output Warum wirft mir das Programm diesen Fehler? Allgemeine Java-Themen 6
X jvm exception abfangen und an externes Programm schicken Allgemeine Java-Themen 4
B Programm updaten mit FXLauncher Allgemeine Java-Themen 1
D Nicht quelloffenes Programm Allgemeine Java-Themen 5
F Java-Programm lizensieren Allgemeine Java-Themen 21
I Programm im Hintergrund bei Windows zur Steuerung der Tastatur nutzen Allgemeine Java-Themen 2
X Aus Programm "Installationsprogramm" machen Allgemeine Java-Themen 6
T Java Programm in Internetseite? Allgemeine Java-Themen 4
T Java Programm frisst RAM Allgemeine Java-Themen 6
H Alter Java-Programm läuft nicht mehr. Laut strace fehlt libpthread.so.0 Allgemeine Java-Themen 3
H Runtime reagiert erst wenn Programm abbricht Allgemeine Java-Themen 1
E Exceptions abfangen und dann Programm stoppen - aber wie? Allgemeine Java-Themen 2
Neumi5694 Offenes Programm nutzen Allgemeine Java-Themen 4
L Java-Programm Zahlenkombinationen ausgeben Allgemeine Java-Themen 10
KaffeeFan Methoden Suche Methode um Programm kurz warten zu lassen Allgemeine Java-Themen 22
J Programm meldet "Keine Rückmeldung" nach Verbindung zum Server Allgemeine Java-Themen 4
T Java Programm sauber beenden (Mac OS) Allgemeine Java-Themen 7

Ähnliche Java Themen

Neue Themen


Oben