[Gelöst] ShowModal bringt Rechner zum hängen

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.

Re: ShowModal bringt Rechner zum hängen

Beitragvon MacWomble » 7. Jan 2019, 14:19 Re: ShowModal bringt Rechner zum hängen

Das geht. Alle Forms gehen. Nur in der Kombination

IrgendeineForm - IrgendeineAndereForm - FrmAdressAuswahlListe - NochEineForm

tritt das Problem bei NochEineForm auf.

Ich habe mal weiter versucht:
IrgendeineForm - IrgendeineAndereForm - NochEineForm - FrmAdresseBearbeiten
funktioniert. Demnach muss das Problem aus FrmAdressAuswahlListe kommen ...

Ich suche weiter.
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.
MacWomble
Lazarusforum e. V.
 
Beiträge: 793
Registriert: 17. Apr 2008, 00:59
Wohnort: Freiburg
OS, Lazarus, FPC: Mint 19.1 Cinnamon / CodeTyphon LAB Version 6.90 / FP 3.3.1 Rev 42237 | 
CPU-Target: Intel i7 64/32 Bit
Nach oben

Beitragvon wp_xyz » 7. Jan 2019, 15:10 Re: ShowModal bringt Rechner zum hängen

Verstehe ich richtig, dass der Hänger beim Arbeiten der Routine "BearbeiteAdresse" auftritt? In welcher Zeile? Wenn es, wie ich aufgrund anderer Posts weiter oben vermute, dann geschieht, wenn das Formular TfrmAdresse angezeigt wird, dann setze einfach an den Anfang jeder Methode von TfrmAdresse einen Breakpoint und finde heraus, wo genau in TfrmAdresse das Problem sitzt. Arbeite dich möglichst nahe an die auslösende Zeile herran und prüfe dabei den Inhalt aller Variablen. Du kannst auch unter "Hinzufügungen und Beeinflussungen eine benutzerdefinierte Option -gw2 setzen und kannst damit in den LCL-Code hineinsteppen (wobei ich nicht glaube, dass der Fehler in der LCL liegt, aber du könntest eine Idee kriegen, woran der Fehler liegt).
wp_xyz
 
Beiträge: 2915
Registriert: 8. Apr 2011, 08:01

Beitragvon MacWomble » 7. Jan 2019, 17:49 Re: ShowModal bringt Rechner zum hängen

Wo genau das Problem auftritt (Assemblermeldung und später der Hänger) steht alles schon weiter oben. (mein zweiter Post)
Ich habe auch schon durchgesteppt, Variablen geprüft usw. ich komme aber nicht wirklich weiter (Außer der Stelle wo es tatsächlich hängen bleibt).
Dort wird ein Fokus gesetzt. Das Feld auf den der Fokus soll ist auch vorhanden, jedoch wird die Form nicht angezeigt.

Und nochmal:
Es hängt die komplette Benutzeroberfläche, nicht nur das Programm. Ich kann nichts mehr anklicken, auch keine anderen Programme.
Dank Linux kann ich über TTY1 den Rechner neu starten oder auch versuchen (geht aber nicht) den Prozess abzuschießen.

Was das Anbinden in eine leere Form betrifft, so ist dies nicht so ohne weiteres möglich. Die Forms sind Teil eines sehr umfangreichem Projekts mit einer riesigen Datenbank und zahlreichen DataModules. Aber durch testweise Änderung der Reihenfolge konnte ich ja bereits erkennen, dass der Fehler nur auftritt, wenn aus der TfrmAdressListe eine weitere (beliebige) Form aufgerufen wird. Folglich muss sich - zumindest theoretisch - in TfrmAdressListe das Problem finden. Diese hat jedoch im wesentlichen nur zwei dbGrids und ein paar Buttons, verarbeitet wird hier absolut nichts.
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.
MacWomble
Lazarusforum e. V.
 
Beiträge: 793
Registriert: 17. Apr 2008, 00:59
Wohnort: Freiburg
OS, Lazarus, FPC: Mint 19.1 Cinnamon / CodeTyphon LAB Version 6.90 / FP 3.3.1 Rev 42237 | 
CPU-Target: Intel i7 64/32 Bit
Nach oben

Beitragvon Michl » 7. Jan 2019, 18:48 Re: ShowModal bringt Rechner zum hängen

Bei ählichen Problemen hilft es mir, eine Projektkopie zu erstellen und diese solange zu reduzieren, bis nur noch das Problem sichtbar ist oder dieses sich auf dem Weg erklärt.

Hast du mal probiert Qt oder Qt5 als Widgetset zu verwenden? Sollte es tatsächlich ein LCL-GTK2-Problem sein, würde es dort vermutlich nicht auftreten.
Code: Alles auswählen
type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 
Michl
 
Beiträge: 2320
Registriert: 19. Jun 2012, 11:54
OS, Lazarus, FPC: Win7 Laz 1.7 Trunk FPC 3.1.1 Trunk | 
CPU-Target: 32Bit/64bit
Nach oben

Beitragvon pluto » 7. Jan 2019, 19:31 Re: ShowModal bringt Rechner zum hängen

Dank Linux kann ich über TTY1 den Rechner neu starten oder auch versuchen (geht aber nicht) den Prozess abzuschießen.

du kannst es mit kill -9 versuchen, dass geht nur als root.

Komisch finde ich das, dass ganze System aufhängt.... Wann ist das Normalerweise der Fall? Ich kennen nur ein paar Beispiele:
1. Wenn du mit Threads arbeitest und irgendwie ein Fehler eingebaut hast.
2. Mit Multimedia Sachen wie z.b. mit der xineLib oder VLCLib.
3. Vielleicht auch mit dem TFrom.Handle stimmt was nicht?

Was kennt ihr für Beispiele? Ich denke, diese Antworten könnte zur Lösung das Problems beitragen.
Eine einfache Endlosschleife würde jetzt z.b. nicht das ganze System Aufhängen(Soweit ich weiß).
Hängt nur die UI oder das ganze System? Da du das TTY wechseln kannst, denke ich das nur die Oberfläche Hängt, d.h. du könntest lightdm neu Starten...

Ich würde versuchen ohne Debugger den Fehler zu finden...
Versuche in der Fraglichen Funktion z.b. vor jedem Befehl und nach jedem Befehl ein writeln zu schreiben oder versuche es in einer Log Datei zu schreiben.
Mit dieser art habe ich bisher so gut wie jeden Fehler finden können. Sogar Fehler, die nicht immer auftauchen...
MFG
Michael Springwald
Aktuelles Projekt: PlutoArduino
pluto
Lazarusforum e. V.
 
Beiträge: 7006
Registriert: 19. Nov 2006, 12:06
Wohnort: Oldenburg/Oldenburg
OS, Lazarus, FPC: Linux Mint 18.3 | 
CPU-Target: AMD
Nach oben

Beitragvon MacWomble » 7. Jan 2019, 19:56 Re: ShowModal bringt Rechner zum hängen

Threads verwende ich keine.
Ein Logfile schreibe ich, aber da ist alles OK. Der Fehler wird in die customform.inc verschleppt ...

Neue Erkenntnis - keine Ahnung ob es hilft. Ich habe versucht über OnFormActivate weiter zu kommen. Der Punkt wo das Programm stehen bleibt ist nun ein anderer:

In customform.inc in der Funktion TCustomForm.ShowModal:
FFocusedForm enthält die richtige Form.

Code: Alles auswählen
 
  Application.ModalStarted;
  try
    Include(FFormState, fsModal);
    if (PopupMode = pmNone) and HandleAllocated then
      RecreateWnd(Self); // need to refresh handle for pmNone because ParentWindow changes if (fsModal in FFormState) - see GetRealPopupParent
    ActiveWindow := GetActiveWindow;
    SavedFocusState := SaveFocusState;
    SavedCursor := Screen.Cursor;
    Screen.FSaveFocusedList.Insert(0, Screen.FFocusedForm);
    Screen.FFocusedForm := Self;
    Screen.MoveFormToFocusFront(Self);
    Screen.Cursor := crDefault;
    ModalResult := 0;
 
    try
      if WidgetSet.GetLCLCapability(lcModalWindow) = LCL_CAPABILITY_NO then
        DisabledList := Screen.DisableForms(Self)
      else
        DisabledList := nil;
      Show;
      try
        // activate must happen after show
        Perform(CM_ACTIVATE, 0, 0);
        TWSCustomFormClass(WidgetSetClass).ShowModal(Self);
        repeat
          { Delphi calls Application.HandleMessage
            But HandleMessage processes all pending events and then calls idle,
            which will wait for new messages. Under Win32 there is always a next
            message, so it works there. The LCL is OS independent, and so it uses
            a better way: }

          try
            WidgetSet.AppProcessMessages; // process all events       <<<<<<<<<<<<< und ab hier geht nichts mehr!
 


- kill -9 hilft nicht
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.
MacWomble
Lazarusforum e. V.
 
Beiträge: 793
Registriert: 17. Apr 2008, 00:59
Wohnort: Freiburg
OS, Lazarus, FPC: Mint 19.1 Cinnamon / CodeTyphon LAB Version 6.90 / FP 3.3.1 Rev 42237 | 
CPU-Target: Intel i7 64/32 Bit
Nach oben

Beitragvon pluto » 7. Jan 2019, 20:42 Re: ShowModal bringt Rechner zum hängen

- kill -9 hilft nicht

dann ist es Heftig... wenn nicht mal -9 hilft.
Kannst du das Projekt nachbauen(Also nicht vollständig, ich meine nur, dass was Probleme macht)? und so vielleicht Isolierern? Ohne gleich das ganze Projekt zu Veröffentlichen?
MFG
Michael Springwald
Aktuelles Projekt: PlutoArduino
pluto
Lazarusforum e. V.
 
Beiträge: 7006
Registriert: 19. Nov 2006, 12:06
Wohnort: Oldenburg/Oldenburg
OS, Lazarus, FPC: Linux Mint 18.3 | 
CPU-Target: AMD
Nach oben

Beitragvon MacWomble » 7. Jan 2019, 21:02 Re: ShowModal bringt Rechner zum hängen

Ich habe jetzt mal in der aufrufenden Form (welche ich verdächtige) alles auskommentiert und von der DB getrennt - keine Änderung.
Das selbe anschließend mit der aufgerufenen Form - Fehler kommt trotzdem. (Aufrufende Form wieder original)
Dabei habe ich jeweils alle Datengebundenen Controls entfernt.

Hiermit wollte ich ausschließen, dass eventuell die Datenbank mir hier ein Bein stellt.

Ansonsten habe ich geprüft:
1. Alle Forms meines Projekts arbeiten unabhängig voneinander wie sie sollen.
2. Lediglich aus dieser einen aufrufenden Form kann ich keine weitere Form aufrufen - egal welche.
3. Aus jeder anderen Form kann ich weitere Forms aufrufen, egal wie tief das verschachtelt ist.
4. Der Aufruf passiert über Actions, welche in anderen Units gespeichert sind. D.h. egal von wo ich die Form (Action) aufrufe, es ist immer der selbe Befehl.

Da es sich hierbei um eine Komfortfunktion handelt welche nicht zwingend notwendig ist (aber sehr sinnvoll wäre), widme ich mich jetzt erst mal wieder den wichtigeren Sachen (Kundenauftrag, Zeitdruck).

Ich bleibe hier aber auf jeden Fall am Ball und möchte das auch irgendwann gelöst bekommen. Also falls noch jemand eine Idee hat - nur her damit.

Einstweilen bedanke ich mich für das bisher aufgebrauchte Hirnschmalz, die guten Hinweise und die tolle Hilfe - auch wenn es noch nicht zum Ziel führte.

Eventuell entferne ich die verdächtige Form(s) aus dem Projekt und erstelle diese neu - vielleicht hängt da auch irgendwo irgendwas unauffindliches, unheimliches (X-Akte)
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.
MacWomble
Lazarusforum e. V.
 
Beiträge: 793
Registriert: 17. Apr 2008, 00:59
Wohnort: Freiburg
OS, Lazarus, FPC: Mint 19.1 Cinnamon / CodeTyphon LAB Version 6.90 / FP 3.3.1 Rev 42237 | 
CPU-Target: Intel i7 64/32 Bit
Nach oben

Beitragvon pluto » 7. Jan 2019, 21:11 Re: ShowModal bringt Rechner zum hängen

Du hast geschrieben, dass du alle Froms Dynamisch Erzeugst richtig? Gibt es denn eine LFM Datei?
Wenn, solltest du die mal genauer anschauen. Vielleicht steht da irgendwas drin. Z.B. ein Zeichen, was zu diesem Fehler führt, kam schon vor z.b. Bei "Apfel", wie man im Internet lesen konnte....
MFG
Michael Springwald
Aktuelles Projekt: PlutoArduino
pluto
Lazarusforum e. V.
 
Beiträge: 7006
Registriert: 19. Nov 2006, 12:06
Wohnort: Oldenburg/Oldenburg
OS, Lazarus, FPC: Linux Mint 18.3 | 
CPU-Target: AMD
Nach oben

Beitragvon af0815 » 7. Jan 2019, 21:12 Re: ShowModal bringt Rechner zum hängen

MacWomble hat geschrieben:Eventuell entferne ich die verdächtige Form(s) aus dem Projekt und erstelle diese neu - vielleicht hängt da auch irgendwo irgendwas unauffindliches, unheimliches (X-Akte)

Einen hätte ich noch: Das lfm in einem Texteditor öffnen und kontrollieren ob nicht unerwartet eine Eigenschaft des Forms geändert wird, die nur in diesem Form geändert wird. Zur Erinnerung, im lfm werden nur die Änderungen zur 'Default' gespeichert.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
af0815
 
Beiträge: 3686
Registriert: 7. Jan 2007, 10:20
Wohnort: Niederösterreich
OS, Lazarus, FPC: FPC 3.2 Lazarus 2.0 per fpcupdeluxe | 
CPU-Target: 32Bit (64Bit)
Nach oben

Beitragvon MacWomble » 7. Jan 2019, 21:13 Re: ShowModal bringt Rechner zum hängen

ja, in diese Richtung geht meine Vermutung auch so langsam. Ich finde einfach keine logische Erklärung.

Deswegen meinte ich ja, die Form(s) evtl. neu zu erstellen.

Nachtrag:
Die lfm-Files sehen normal aus. Keine auffälligen Änderungen gefunden ... :(
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.
MacWomble
Lazarusforum e. V.
 
Beiträge: 793
Registriert: 17. Apr 2008, 00:59
Wohnort: Freiburg
OS, Lazarus, FPC: Mint 19.1 Cinnamon / CodeTyphon LAB Version 6.90 / FP 3.3.1 Rev 42237 | 
CPU-Target: Intel i7 64/32 Bit
Nach oben

Beitragvon pluto » 7. Jan 2019, 21:26 Re: ShowModal bringt Rechner zum hängen

Die lfm-Files sehen normal aus. Keine auffälligen Änderungen gefunden ..

Es ging mir auch um Zeichen, die man normalerweise nicht sehen würde. Schau dir wenn möglich, die Datei mal im Hexeditor an.
oder vielleicht wurde sie falsch codiert? Vergleich mal die Codierung von den einzeln LFM Dateien.

Klingt nach einem Spannenden Fehler...
MFG
Michael Springwald
Aktuelles Projekt: PlutoArduino
pluto
Lazarusforum e. V.
 
Beiträge: 7006
Registriert: 19. Nov 2006, 12:06
Wohnort: Oldenburg/Oldenburg
OS, Lazarus, FPC: Linux Mint 18.3 | 
CPU-Target: AMD
Nach oben

Beitragvon MacWomble » 7. Jan 2019, 21:59 Re: ShowModal bringt Rechner zum hängen

Na Ja, spannend finde ich das nicht wirklich :shock:
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.
MacWomble
Lazarusforum e. V.
 
Beiträge: 793
Registriert: 17. Apr 2008, 00:59
Wohnort: Freiburg
OS, Lazarus, FPC: Mint 19.1 Cinnamon / CodeTyphon LAB Version 6.90 / FP 3.3.1 Rev 42237 | 
CPU-Target: Intel i7 64/32 Bit
Nach oben

Beitragvon pluto » 7. Jan 2019, 22:10 Re: ShowModal bringt Rechner zum hängen

Na Ja, spannend finde ich das nicht wirklich

Ich finde viel mehr die Auswirkung Interessant. Das der ganze Fenster Manger unter Linux einfriert...

Vielleicht werden die Messages irgendwie durcheinander gebracht...
MFG
Michael Springwald
Aktuelles Projekt: PlutoArduino
pluto
Lazarusforum e. V.
 
Beiträge: 7006
Registriert: 19. Nov 2006, 12:06
Wohnort: Oldenburg/Oldenburg
OS, Lazarus, FPC: Linux Mint 18.3 | 
CPU-Target: AMD
Nach oben

Beitragvon gsa » 8. Jan 2019, 11:18 Re: ShowModal bringt Rechner zum hängen

MacWomble hat geschrieben:Wo genau das Problem auftritt (Assemblermeldung und später der Hänger) steht alles schon weiter oben. (mein zweiter Post)
Ich habe auch schon durchgesteppt, Variablen geprüft usw. ich komme aber nicht wirklich weiter (Außer der Stelle wo es tatsächlich hängen bleibt).
Dort wird ein Fokus gesetzt. Das Feld auf den der Fokus soll ist auch vorhanden, jedoch wird die Form nicht angezeigt.


Soweit ich mich erinnere, erzeugt das Setzen des Fokus auf ein Feld in einem nicht sichtbaren Form eine Exception, zumindest unter WIndows.

Gruß Gerd
gsa
 
Beiträge: 6
Registriert: 13. Jun 2008, 14:23
OS, Lazarus, FPC: Windows/Linux (Lazarus 1.8.4 / FPC 3.0.4) | 
Nach oben

» Weitere Beiträge siehe nächste Seite »
VorherigeNächste

Zurück zu Sonstiges



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste

porpoises-institution
accuracy-worried