Seltsame Abstürze lfm-Datei defekt? [gelöst]

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Antworten
AlterMann
Beiträge: 238
Registriert: So 13. Dez 2009, 09:43
OS, Lazarus, FPC: Lazarus 3.0 (rev lazarus_3_0) FPC 3.2.2 i386-win32-win32/win64
CPU-Target: x86 64Bit
Wohnort: Niederösterreich

Seltsame Abstürze lfm-Datei defekt? [gelöst]

Beitrag von AlterMann »

Hallo

Ich habe gerade bei einem ziemlich großen Programmprojekt unerklärliche Abstürze.

Nachdem ich eine unbedeutende Kleinigkeit im Quelltext geändert habe, kompiliere und starte kommt ein SIGFPE-Fehler.
Das Programm kommt nicht einmal zum Vorschein.

Beim nächsten Start der IDE lädt Lazarus das Projekt nicht mehr mit der Meldung: Lesefehler! In Datei C:\....\programmu.lfm Division by Zero
Diese Meldung kann ich nur Abbrechen.

Daraufhin erscheint ein Fenster welches mir anbietet die *.lfm Datei zu korrigieren (siehe Bild im Anhang)

Das Icon in der Form ist aber seit Projektbeginn unverändert enthalten.

Ich habe daraufhin - als das gestern das erstemal Auftrat - ein paar Dateien (*.lfm, *.lpi) aus dem automatischen Backup) wiederhergestellt, und das Problem schien behoben.

Heute war das gleiche wieder :cry:

Was kann das sein?
Hat jemand eine Idee?
Dateianhänge
lazfehl.jpg
Zuletzt geändert von AlterMann am So 16. Mär 2014, 19:07, insgesamt 1-mal geändert.
Früher war alles besser. Und aus Holz!

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: Seltsame Abstürze lfm-Datei defekt?

Beitrag von Michl »

Ich weiss nicht, ob dir das hilft?! Ich hatte mal das gleiche Problem, die Ursache war, dass ich eine Komponente geupdatet hatte und beim nächsten Öffnen des Projekts waren die *.lfm nicht mehr gültig, da sich scheinbar die Eigenschaften der eingesetzten Komponente verändert hatten.
Geholfen hat mir: Zuerst hatte ich alle betroffenen Komponenten aus meinem Projekt entfernt, dann das Projekt ohne die Komponenten kompiliert, die neuen Komponenten ins Projekt wieder aufgenommen.

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

wp_xyz
Beiträge: 5142
Registriert: Fr 8. Apr 2011, 09:01

Re: Seltsame Abstürze lfm-Datei defekt?

Beitrag von wp_xyz »

Projekt-Quelltext laden ("Projekt" / "lpr-Datei anzeigen") und einen Breakpoint auf dem allerersten "begin" setzen. Programm kompilieren (oder besser vorher: "Start" / "neu komilieren"). Ich interpretiere deine Beschreibung so, dass das Programm dann auf dieser ersten Anweisung halten wird. Ab dann mit F7 in jede zugängliche Routine reingehen. Setze auch noch Breakpoints in alle "Form*"-Eventhandler von ProgrammU, die du geschrieben hast. Irgendwann wird dein Fehler auftreten und du kannst ihn näher einkreisen. Wahrscheinlich wird, wie Michl meint, wirklich eine Komponente andere Eigenschaften in die lfm-Datei geschrieben haben, die bisher noch unbekannt sind. Hast du Lazarus aktualisiert? Vor allem mit der trunk-Version kann sowas gelegentlich passieren.

AlterMann
Beiträge: 238
Registriert: So 13. Dez 2009, 09:43
OS, Lazarus, FPC: Lazarus 3.0 (rev lazarus_3_0) FPC 3.2.2 i386-win32-win32/win64
CPU-Target: x86 64Bit
Wohnort: Niederösterreich

Re: Seltsame Abstürze lfm-Datei defekt?

Beitrag von AlterMann »

Das ist ja das Komische!

Ich habe Lazarus nicht aktualisiert und (außer kleinen Änderungen im Quelltext) nichts verändert.

Er behauptet, daß der Identifier Data nicht in TIcon existiert und markiert mir auch das Feld Data.

Ich hab jetzt die lfm und lpi-Datei wieder aus dem Backup zurückgespielt und neu kompiliert, aber ich fürchte, daß das wieder passieren wird.
Früher war alles besser. Und aus Holz!

wp_xyz
Beiträge: 5142
Registriert: Fr 8. Apr 2011, 09:01

Re: Seltsame Abstürze lfm-Datei defekt?

Beitrag von wp_xyz »

Es ist schwer, mit den spärlichen Angaben etwas anzufangen...

Also: Der Absturz erfolgt zur Laufzeit? Oder passiert der Fehler beim Compilieren? Welches Icon? Das Icon der Anwendung? Oder verwendest du Icons explizit im Code? Oder im Formular über Image-Komponenten oder ImageListen?

Meines Wissens hat TIcon gar kein Feld "Data". Aber wieso markiert er dann das Feld "Data"? Oder ist dieses Data ganz etwas anderes?

Ich denke, du musst hier schon etwas Code zeigen, sonst kann man dir nicht helfen.
Zuletzt geändert von wp_xyz am Fr 25. Okt 2013, 15:25, insgesamt 1-mal geändert.

AlterMann
Beiträge: 238
Registriert: So 13. Dez 2009, 09:43
OS, Lazarus, FPC: Lazarus 3.0 (rev lazarus_3_0) FPC 3.2.2 i386-win32-win32/win64
CPU-Target: x86 64Bit
Wohnort: Niederösterreich

Re: Seltsame Abstürze lfm-Datei defekt?

Beitrag von AlterMann »

Dies ist der Beginn der *lfm-Datei meiner Hauptform:

Code: Alles auswählen

object Form1: TForm1
  Left = 52
  Height = 740
  Top = -1
  Width = 1250
  BorderIcons = [biSystemMenu, biMinimize]
  BorderStyle = bsSingle
  Caption = 'Stabeg - B'
  ClientHeight = 740
  ClientWidth = 1250
  Constraints.MaxHeight = 740
  Constraints.MaxWidth = 1250
  Constraints.MinHeight = 740
  Constraints.MinWidth = 1250
  Icon.Data = {
    7E05000000000100010010100000010008006805000016000000280000001000
    0000200000000100080000000000000000000000000000000000000100000000
    00000404DD00DADADF000404E500E4E4E8000404EB00EFEFEE00EFEFEF000F0F
    F1000404F2002F2FF2006464F2001A1AF4002F2FF400FAFAF4002424F5003A3A
    F5006F6FF5007A7AF5002F2FF7004444F7004F4FF7007A7AF7000404F8003A3A
    F8004F4FF8005A5AF8007A7AF8008484F800FAFAF8004444FA002F2FFB006464
    FB008484FB008F8FFB00FAFAFB004F4FFD006F6FFD008F8FFD00A4A4FD000404
    FE005A5AFE007A7AFE00FAFAFE00000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    000000000000000000000000000000000000000000000000000000000000FFFF
    FF002B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B
    2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B0808080404040404020202000000
    0000161F191919181413130F0F0C0C090900161F1D171717120E0E0B0B070707
    09001E262121201B1A111510100A0A0A1100032A22222222221C1C0D0D060503
    0D01032A2A22222222221C1C0D0606030D03032A2A2A22222222221C1C060603
    0D03172625252525201B1A111510100A1B0227292828282323231D1D17170C12
    14042729292929292424241F1F19191814042727272727272727161616080808
    04042B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B
    2B2BFFFF0000FFFF0000FFFF0000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000FFFF0000FFFF
    0000
  }
  KeyPreview = True
  OnActivate = FormActivate
  OnClose = FormClose
  OnCreate = FormCreate
  OnKeyPress = FormKeyPress
  OnMouseMove = FormMouseMove
 
Im Fehlerfall mokiert sich die IDE über den Bereich "Icon.Data" (siehe ScreenPrint im Ausgangsposting) und markiert ihn.

Im Augenblick funktioniert alles, obwohl der Eintrag "Icon.Data" genauso drinsteht.
Beginnen tuts immer mit einem Laufzeitfehler (SIGFPE) und ab da kann die IDE das Projekt gar nicht mehr laden (Division by 0)

Mehr kann ich im Augenblick leider nicht bereitstellen, da es wie gesagt jetzt wieder funktioniert.

Es handelt sich scheints um das Icon das ich der Hauptform zugewiesen habe.

Trotzdem danke für die Mühe.
Christian
Früher war alles besser. Und aus Holz!

wp_xyz
Beiträge: 5142
Registriert: Fr 8. Apr 2011, 09:01

Re: Seltsame Abstürze lfm-Datei defekt?

Beitrag von wp_xyz »

Wenn der Fehler wieder kommt, entferne das Icon doch mal probehalber, oder ersetze es durch ein anderes aus irgendeiner Icon-Sammlung, zur noch das Lazarus.ico aus lazarus\ide.

AlterMann
Beiträge: 238
Registriert: So 13. Dez 2009, 09:43
OS, Lazarus, FPC: Lazarus 3.0 (rev lazarus_3_0) FPC 3.2.2 i386-win32-win32/win64
CPU-Target: x86 64Bit
Wohnort: Niederösterreich

Re: Seltsame Abstürze lfm-Datei defekt?

Beitrag von AlterMann »

Werde ich versuchen.
Leider ist die IDE im Fehlerfall beinahe unbedienbar.
Soll heißen:
Fehlermeldung "Kann nicht laden" - Abbrechen - 10 sek. Pause - nächste Fehlermeldung - Abbrechen - 10 sek. Pause ... usw.

Aber wie gesagt, werd's versuchen.

Danke
Christian
Früher war alles besser. Und aus Holz!

AlterMann
Beiträge: 238
Registriert: So 13. Dez 2009, 09:43
OS, Lazarus, FPC: Lazarus 3.0 (rev lazarus_3_0) FPC 3.2.2 i386-win32-win32/win64
CPU-Target: x86 64Bit
Wohnort: Niederösterreich

Re: Seltsame Abstürze lfm-Datei defekt? (tw.) Auflösung

Beitrag von AlterMann »

Also:

Nachdem es vorhin wieder passiert ist fiel mir auf, daß dieser Fehler
laz1.jpg
ja eigentlich gar nicht von meinem Code stammt, sonder von dort:

Code: Alles auswählen

//Aus LCLProc:
 
procedure RaiseGDBException(const Msg: string);
begin
  debugln(rsERRORInLCL, Msg);
  // creates an exception, that gdb catches:
  debugln(rsCreatingGdbCatchableError);
  DumpStack;
  if (length(Msg) div (length(Msg) div 10000))=0 then ; //Zeile 865
end;
Der Debugger zeigte mir, daß in Msg drinstand eine Komponente namens Tabsheet14 hätte irgendwelche Werte out of bounds.

Das komische ist nur, daß ich auf meiner Form kein Tabsheet14 finden konnte (im Objektinspektor war sie jedoch vorhanden)
Das dumme Ding dürfte anscheinend irgendwann irrtümlich durch Copy&Paste entstanden sein und hat sich unter anderen TabSheets versteckt.
Ich hab's gelöscht und seither ist nichts mehr passiert.

Was ich trotzdem nicht verstehe:
Warum die IDE Division by Zero angezeigt hat, beim Versuch das Projekt zu laden.
Warum der Hinweis auf TIcon.Data angezeigt wurde.
Warum der Fehler nicht immer aufgetreten ist.
Wozu diese komische Zeile 865 in der LCLProc gut sein soll

Also eigentlich wirft das mehr Fragen auf, als es beantwortet.
(Was z.T. sicherlich daran liegt, daß ich zwar inzwischen sehr gerne und viel mit Lazarus programmiere aber dennoch kaum um Interna und den Quelltext von Komponenten kümmere)
Aber für mich ist wichtig, daß das lästige Problem zunächst gelöst ist, denn das Projekt wird in der Firma inzwischen im Echtbetrieb verwendet und hat zentrale Funktionen zu erfüllen, da hab ich keine Zeit für unerklärliche Faxen :wink:
Früher war alles besser. Und aus Holz!

wp_xyz
Beiträge: 5142
Registriert: Fr 8. Apr 2011, 09:01

Re: Seltsame Abstürze lfm-Datei defekt?

Beitrag von wp_xyz »

daß das lästige Problem zunächst gelöst ist
Aber du schreibst nicht, wie du das Problem gelöst hast.
Werde ich versuchen.
Leider ist die IDE im Fehlerfall beinahe unbedienbar.
Das Icon kannst du auch ohne IDE aus dem Formular löschen : beende Lazarus, öffne die betreffende .lfm-Datei mit einem beliebigen Editor und lösche die Zeilen, die zu dem Icon gehören (also von "Icon.Data = (" bis zu ")"), speichern.

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Seltsame Abstürze lfm-Datei defekt? (tw.) Auflösung

Beitrag von mse »

AlterMann hat geschrieben: Warum die IDE Division by Zero angezeigt hat, beim Versuch das Projekt zu laden.
Vermutlich aus dem gleichen Grund wie dein Programm (Problem mit Tabsheet14).
Wozu diese komische Zeile 865 in der LCLProc gut sein soll
Die ezeugt eine Division / Null Exception, jedenfalls solange msg < 10000 Bytes lang ist. ;-)
Die umständliche Formulierung soll vermutlich verhindern, dass der Compiler reklamiert oder die Zeile wegoptimiert. Die Frage ist warum RaiseGDBException() aufgerufen wird. Was zeigt der Stack?

AlterMann
Beiträge: 238
Registriert: So 13. Dez 2009, 09:43
OS, Lazarus, FPC: Lazarus 3.0 (rev lazarus_3_0) FPC 3.2.2 i386-win32-win32/win64
CPU-Target: x86 64Bit
Wohnort: Niederösterreich

Re: Seltsame Abstürze lfm-Datei defekt?

Beitrag von AlterMann »

>Aber du schreibst nicht, wie du das Problem gelöst hast.<

Doch. Indem ich Tabsheet14 aus dem Objektinspektor gelöscht habe.

@mse
Kann ich leider nicht mehr sagen, da es jetzt wie gesagt funktioniert.
Ich denke, daß die (nur sporadisch) auftretende "Out of Bounds"-Geschichte in die Exceptionroutine geführt hat.
Früher war alles besser. Und aus Holz!

AlterMann
Beiträge: 238
Registriert: So 13. Dez 2009, 09:43
OS, Lazarus, FPC: Lazarus 3.0 (rev lazarus_3_0) FPC 3.2.2 i386-win32-win32/win64
CPU-Target: x86 64Bit
Wohnort: Niederösterreich

Re: Seltsame Abstürze lfm-Datei defekt? [gelöst]

Beitrag von AlterMann »

Ist nie wieder aufgetreten.
Ich nehme daher an, daß die "verirrte" Komponente TabSheet14 der Auslöser war.
(Nur fürs Logbuch)
Kirk Ende :)
Früher war alles besser. Und aus Holz!

Antworten