[gelöst] SIGFPE bei Click auf Button zum Öffnen eines TForm

Antworten
Heinrich Wolf
Beiträge: 323
Registriert: Di 12. Apr 2011, 13:21
OS, Lazarus, FPC: WinXP + VMWare Player mit Fedora14, L 1.1, FPC 2.7.1
CPU-Target: 1core 1,8GHz 32Bit
Wohnort: Fürth
Kontaktdaten:

[gelöst] SIGFPE bei Click auf Button zum Öffnen eines TForm

Beitrag von Heinrich Wolf »

Hallo,

in eines meiner beiden öffentlichen Projekte hat sich ein Fehler eingeschlichen, der das Programm komplett wertlos macht. Das Projekt läuft auf Delphi und Lazarus, Windows und Linux 32 Bit. Aber der Fehler tritt nur bei Linux auf. Es tut mir leid: Es ist ein riesen Projekt, aber ich weiß nicht, wie ich den Fehler eingrenzen kann. Mag sich das jemand anschauen und mir helfen? Es geht um http://www.Wolf-Fuerth.de/calprint.src.zip . Das zip Archiv muss man auf Windows entpacken, dann kann man es auf Linux kopieren. Dazu muss man noch Indy kopieren von http://www.indyproject.org/sockets/fpc/indy-10.2.0.3.tar.gz in den relativen Pfad programm/Internet/indy-10.2.0.3 . Es geht um das Hauptformular programm/sonst/calprint/main.pas/.lfm . Darin gibt es u.a. 3 Buttons: BtnEditLayout, BtnCopyLayout, BtnNewLayout. Beim Click auf irgendeinen dieser Buttons gibt es einen SIGFPE. Breakpoints in den zugeordneten Event Handlern sind schon zu spät. Dann ist der SIGFPE schon passiert. Gemeinsamer Code ist, dass das Layout Form zusammen mit dem Preview Form nachgeladen werden soll. Aber dieser Code ist ja noch nicht ausgeführt. Wenn ich den Code in den Event Handlern auskommentiere, ist auch der SIGFPE weg. Aber warum kommt der SIGFPE so früh, dass ich ihn nicht debuggen kann? Ich bin ratlos.

Gruß
Heiner
Zuletzt geändert von Heinrich Wolf am Mo 27. Mai 2013, 20:03, insgesamt 2-mal geändert.

Benutzeravatar
theo
Beiträge: 10498
Registriert: Mo 11. Sep 2006, 19:01

Re: SIGFPE bei Click auf Button zum Öffnen eines TForm

Beitrag von theo »

Heinrich Wolf hat geschrieben:in eines meiner beiden öffentlichen Projekte hat sich ein Fehler eingeschlichen,


Was heisst eingeschlichen? Einfach so, über Nacht? Was hast du denn vorher gemacht? Ein SVN Update?

Heinrich Wolf
Beiträge: 323
Registriert: Di 12. Apr 2011, 13:21
OS, Lazarus, FPC: WinXP + VMWare Player mit Fedora14, L 1.1, FPC 2.7.1
CPU-Target: 1core 1,8GHz 32Bit
Wohnort: Fürth
Kontaktdaten:

Re: SIGFPE bei Click auf Button zum Öffnen eines TForm

Beitrag von Heinrich Wolf »

Eingeschlichen heißt, dass der Fehler da ist und ich zu meiner Schande gestehen muss, dass ich ihn nicht bemerkt habe. Ich teste meistens unter Windows, aber zu wenig unter Linux. Ich biete auf meiner WebSite ein rpm des Programms an und ca. 10 rpm Versionen vorher ist der Fehler schon drin, es sei denn, es hat etwas mit meinem Linux zu tun. Die Änderung ist also nicht über Nacht passiert, sondern inrgendwann in den letzten 2 Jahren. Was ich da alles gemacht habe, kann ich nicht mehr sagen.

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: SIGFPE bei Click auf Button zum Öffnen eines TForm

Beitrag von Christian »

Ich wollt dir gern helfen aber gebs jetzt auf.
Das erst war das ich Indy nicht installieren wollt also deinen Update kram auskommentiert.
Aber ich bekomm die Abhängigkeiten zur Libc die du da reingebaut hast nicht raus und hab n 64bit system, da geb ichs jetzt auf.
Du hattest doch hier schon mal ne ganze weile diskutiert wie man die Abhängigkeit loswird, warum hatsn das ned umgesetzt?
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Heinrich Wolf
Beiträge: 323
Registriert: Di 12. Apr 2011, 13:21
OS, Lazarus, FPC: WinXP + VMWare Player mit Fedora14, L 1.1, FPC 2.7.1
CPU-Target: 1core 1,8GHz 32Bit
Wohnort: Fürth
Kontaktdaten:

Re: SIGFPE bei Click auf Button zum Öffnen eines TForm

Beitrag von Heinrich Wolf »

Hallo Christian,

vielen Dank für die Mühe. Über die LibC hab ich noch nicht sehr viel diskutiert. Ich weiß aber, dass sie bei 64 Bit nicht funktioniert und hätte sie gerne los. Aber ich finde keinen Ersatz für die Funktionen, die ich da brauche.

Heiner

Soner
Beiträge: 623
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Re: SIGFPE bei Click auf Button zum Öffnen eines TForm

Beitrag von Soner »

Bei mir funktioniert es, es gibt kein Absturz. Kompiliert mit Lazarus 1.1, fpc 2.6.0, Xubuntu 13.04 32Bit.
Ich habe hochgeladen, du kannst nachschauen ob da Fehler ist:
http://www.file-upload.net/download-7635043/calprint.tar.gz.html (nur kompiliertes Programmdatei)
Du verwendest ja sehr viele Units, die braucht man doch nicht alle oder.

Heinrich Wolf
Beiträge: 323
Registriert: Di 12. Apr 2011, 13:21
OS, Lazarus, FPC: WinXP + VMWare Player mit Fedora14, L 1.1, FPC 2.7.1
CPU-Target: 1core 1,8GHz 32Bit
Wohnort: Fürth
Kontaktdaten:

Re: SIGFPE bei Click auf Button zum Öffnen eines TForm

Beitrag von Heinrich Wolf »

Hallo Soner,

vielen Dank für den Test. Dein Binary bei mir gestartet, bringt bei mir ebenfalls SIGFPE beim Click auf neues Layout. Ist der SIGFPE eine Eigenart meines Linux? Muss ich das mal neu installieren? Bitte starte doch mal das Binary, das ich compiliert habe, und schreibe mir, ob ein SIGFPE auftritt. Du findest das Binary auf http://www.Wolf-Fuerth.de/calprint-1-14.i686.rpm .

Ja, es werden viele Units eingebunden. Aber ich glaube, dass ich alle brauche.

Heiner

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: SIGFPE bei Click auf Button zum Öffnen eines TForm

Beitrag von Christian »

SIG FPE steht für Floating Point Exception. z.b. ne Division durch 0
das ist keine Eigenart vom Linux es könnt aber z.b. sein das irgend ne Elementgröße die du abfragst 0 ist ne Schrifthöhe o.ä.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Heinrich Wolf
Beiträge: 323
Registriert: Di 12. Apr 2011, 13:21
OS, Lazarus, FPC: WinXP + VMWare Player mit Fedora14, L 1.1, FPC 2.7.1
CPU-Target: 1core 1,8GHz 32Bit
Wohnort: Fürth
Kontaktdaten:

Re: SIGFPE bei Click auf Button zum Öffnen eines TForm

Beitrag von Heinrich Wolf »

Hallo Christian,

ich weiß wofür SIGFPE steht. Aber es ist seltsam, dass der Fehler auf Soners System nicht auftritt, wenn er meinen Quellcode compiliert und sein Binary bei mir den SIGFPE wirft. Es ist auch seltsam, dass es keine Codezeile von mir ist, in welcher der Fehler auftritt. Wie geschrieben: Meine erste Codezeile des OnClick Handlers ist schon hinter dem SIGFPE.

Heiner

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: SIGFPE bei Click auf Button zum Öffnen eines TForm

Beitrag von Christian »

Ich denke Soner hat einfach nur das Programm gestartet und nichts weiter gemacht.
Poste doch bitte mal nen Backtrace wo das auftritt... (Debugerfenster->Aufrufstack)
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Heinrich Wolf
Beiträge: 323
Registriert: Di 12. Apr 2011, 13:21
OS, Lazarus, FPC: WinXP + VMWare Player mit Fedora14, L 1.1, FPC 2.7.1
CPU-Target: 1core 1,8GHz 32Bit
Wohnort: Fürth
Kontaktdaten:

Re: SIGFPE bei Click auf Button zum Öffnen eines TForm

Beitrag von Heinrich Wolf »

Es tut mir leid Soner,

ich hab ein jungfräuliches Linux (Fedora 14) aufgesetzt. Der SIGFPE ist auch bei Deinem Binary wieder aufgetreten. Nochmals vielen Dank für das Mitsuchen.

Heiner

Heinrich Wolf
Beiträge: 323
Registriert: Di 12. Apr 2011, 13:21
OS, Lazarus, FPC: WinXP + VMWare Player mit Fedora14, L 1.1, FPC 2.7.1
CPU-Target: 1core 1,8GHz 32Bit
Wohnort: Fürth
Kontaktdaten:

Re: SIGFPE bei Click auf Button zum Öffnen eines TForm

Beitrag von Heinrich Wolf »

Hallo Christian,

der Tip mit dem Backtrace war goldrichtig. Ich hab erst mal alle verfügbaren Debug Optionen eingeschaltet und dann nochmal debuggt. Dabei ist mir aufgefallen, dass erstaunlich wenige Code-Zeilen Haltepunkte annehmen. SIGFPE kam erst nachdem mein Wunsch-Haltepunkt bereits übersprungen war. Aber dann kam das Programm wenigstens im Quelltext Fenster zum Stehen. Dann ist mir aufgefallen, dass mein Linux auf unerfindlichen Gründen keinen Drucker mehr kennt. Darauf reagiert Calprint mit allen möglichen Exceptions. Jetzt komme ich erst mal selbst weiter. Vielen Dank!

Heiner

Antworten