App raised exception - External SigFPE

Für Fragen rund um die Ide und zum Debugger
_ny
Beiträge: 40
Registriert: Do 18. Okt 2007, 13:40

App raised exception - External SigFPE

Beitrag von _ny »

Hallo,

meine Lieblingsfehlermeldung quält mich mal wieder:

Nach Druch auf F9 wird das Programm kompiliert, und bevor es überhaupt gestartet werden kann, erscheint die Fehlermeldung wie oben beschrieben: External Signal Floationpointexception.

Der Editor zeigt mir dann die LCLProc.pas und dort in der Prozedur RaiseGDBException auf

Code: Alles auswählen

DumpStack;
  if (length(Msg) div (length(Msg) div 10000))=0 then ;
//  {$ENDIF}
end;
ich hab schon sämtliche Prozeduren die zu Programmstart aktiviert werden könnten rausgenommen - mal davon abgesehen, dass ich dort seit dem letzten erfolgreichen Lauf keine Änderungen vorgenommen hab - aber das scheint nicht zu helfen.

Wonach muss ich suchen, um den Fehler zu finden?


vielen Dank!

_ny


//E

der Fehler tritt irgendwann zwischen den Ereignissen "FormCreate" und "FormActivate" auf, soweit lässt sich das einschränken. Und ich glaube, dass liegt nicht an fehlerhaftem Code sondern an irgendeiner "kaputten" VCL auf irgendeiner Form... :/

Euklid
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 10:38
OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
Wohnort: Hessen
Kontaktdaten:

Re: App raised exception - External SigFPE

Beitrag von Euklid »

_ny hat geschrieben:Hallo,
Hallo!

Code: Alles auswählen

DumpStack;
  if (length(Msg) div (length(Msg) div 10000))=0 then ;
//  {$ENDIF}
end;
Wenn die Länge von Msg 0 ist, ist
(length(Msg) div (length(Msg) div 10000)) = 0 div 0

0 div 0 ist jedoch mathematisch nicht definiert, d.h. nicht durchführbar. In diesem Fall würde es zu der von dir genannten Fehlermeldung kommen. Ich nehme an, dass dies die Ursache deiner Beobachtung ist, da beim Start des Programms sehr wahrscheinlich length(msg)=0 ist (?).

Gruß, Euklid

_ny
Beiträge: 40
Registriert: Do 18. Okt 2007, 13:40

Beitrag von _ny »

mit der Funktion hab ich aber nix zu tun, weil die aus dem Repertoire von Lazarus stammt... ich müsst also rausbekommen, wo in meinem Programm ich diese Funktion nutze. Geändert habe ich in dieser jedenfalls nichts :(

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

mir ist aufgefallen wenn ich bestimmte Units einbinde das sie zu solchen Fehler führen. Aber auf sowas muss man erstmal kommen. Ich denke wenn Euklid recht kommt eine andere Meldung. Bei kommt auf jeden Fall immer eine andere wenn ich versuche 0 div 0 zu machen.

Deine Fehler Meldung könnte bedeutet das ein irgendein Zugriff nicht klappt.

Z.b. bei einer Klasse die nicht Installisiert ist oder bei einem Array
(Aber auch hier müsste eine andere Fehler Meldung kommen).
Was hast du denn alles bei Oncreate oder onShow oder onAktivate drin ?
evlt. hilft das schon weiter
MFG
Michael Springwald

_ny
Beiträge: 40
Registriert: Do 18. Okt 2007, 13:40

Beitrag von _ny »

OnCreate, OnShow und OnActivate hab ich komplett ausgeklammert, um Fehler auszuschliessen. Ich müsst jetzt höchstens nochmal die Komponenten durchgehen und dort die OnShows überprüfen, obwohl da auch nichts weiter liegen dürfte. Mal sehen obs hilft... ich hab ja wie gesagt nichts grosses geändert am Programm, nur ein paar Komponenten hinzugefügt. Und ich glaub Codetechnisch hat sich garnichts getan... muss ich wohl erstmal ne Weile wühlen. Vielleicht ist es ja wieder ne ungültige Eigenschaft. Die Komponten stammen alle aus einem Projekt das ich aus Delphi importiert habe...

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

wie sieht denn deine LPR Datei aus oder was für Unis nutzt du. oder was für Komponenten...
MFG
Michael Springwald

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:

Beitrag von Christian »

Auch hier gilt wieder mein Motto.

Drück mal Srg+Alt+S.
Dann bekommst die Stack Lise ganz oben seht die Funktion in der du gerad bis darunter die aufrufenden. Irgendwo in deinem Programm gabs ne Exception und die stelle sollest damit finden.

Ansonsten schalt mal den Debugger aus oder start dein Programm so und schau was für eine Fehlermeldung kommt.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

_ny
Beiträge: 40
Registriert: Do 18. Okt 2007, 13:40

Beitrag von _ny »

STRG+ALT+S bewirkt bei mir nichts, in welchem Menü find ich den Aufrufstack?

Ohne Debugger ausführen hilft auch nicht, ich erhalte nur ne Zugriffsverletzung, ohne Hinweis auf den Grund.

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:

Beitrag von Christian »

Ansicht->Debuggerfenster->Aufrufstack

ALT+STRG+S funktioniert nur wenn der SourceEditor focused ist allerdings ist das eigentlich so nachdem eine Exception aufgetreten ist.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

_ny
Beiträge: 40
Registriert: Do 18. Okt 2007, 13:40

Beitrag von _ny »

geht bei mir auch nich ausm SourceEditor... seltsam. Egal, so richtig schlau werde ich daraus nicht, was sagt mir denn der folgende Stack:

(stimmt irgendwas mit einem meiner zahlreichen DBGrids nicht?)
#0 RAISEGDBEXCEPTION((ANSISTRING) 0x8514334) at lclproc.pas:774
#1 TGTKWIDGETSET__CREATEDCFORWIDGET((PGTKWIDGET) 0x8779708, (PGDKDRAWABLE) 0x0, false, (TGTKWIDGETSET) 0xb72ea020) at gtk1object.inc:5928
#2 TGTKWIDGETSET__GETDC(142055176, (TGTKWIDGETSET) 0xb72ea020) at gtkwinapi.inc:4991
#3 GETDC(142055176) at winapi.inc:336
#4 TWINCONTROL__GETDEVICECONTEXT(0, (TWINCONTROL) 0xb711a750) at wincontrol.inc:7120
#5 TCONTROLCANVAS__CREATEHANDLE((TCONTROLCANVAS) 0xb74ac350) at controlcanvas.inc:90
#6 TCANVAS__REQUIREDSTATE([CSHANDLEVALID..CSFONTVALID], (TCANVAS) 0xb74ac350) at canvas.inc:1532
#7 TCANVAS__TEXTEXTENT((ANSISTRING) 0x8477d30, (TCANVAS) 0xb74ac350, {CX = 0, CY = 0}) at canvas.inc:1591
#8 TCANVAS__TEXTHEIGHT((ANSISTRING) 0x8477d30, (TCANVAS) 0xb74ac350) at canvas.inc:1616
#9 TCUSTOMDBGRID__ADJUSTDEFAULTROWHEIGHT((TCUSTOMDBGRID) 0xb711a750) at dbgrids.pas:2736
#10 TCUSTOMGRID__PARENTFORMHANDLEINITIALIZED((TCUSTOMGRID) 0xb711a750) at grids.pas:2698
#11 TWINCONTROL__PARENTFORMHANDLEINITIALIZED((TWINCONTROL) 0xb711a3d0) at wincontrol.inc:6557
#12 TWINCONTROL__PARENTFORMHANDLEINITIALIZED((TWINCONTROL) 0xb71137f0) at wincontrol.inc:6557
#13 TWINCONTROL__PARENTFORMHANDLEINITIALIZED((TWINCONTROL) 0xb71ed0f0) at wincontrol.inc:6557
#14 TWINCONTROL__PARENTFORMHANDLEINITIALIZED((TWINCONTROL) 0xb7254840) at wincontrol.inc:6557
#15 TCUSTOMFORM__CHILDHANDLESCREATED((TCUSTOMFORM) 0xb7254840) at customform.inc:1859
#16 TWINCONTROL__CREATEWND((TWINCONTROL) 0xb7254840) at wincontrol.inc:6445
#17 TSCROLLINGWINCONTROL__CREATEWND((TSCROLLINGWINCONTROL) 0xb7254840) at scrollingwincontrol.inc:31
#18 TCUSTOMFORM__CREATEWND((TCUSTOMFORM) 0xb7254840) at customform.inc:1789
#19 TFORM__CREATEWND((TFORM) 0xb7254840) at customform.inc:2107
#20 TWINCONTROL__CREATEHANDLE((TWINCONTROL) 0xb7254840) at wincontrol.inc:6343
#21 TWINCONTROL__UPDATESHOWING((TWINCONTROL) 0xb7254840) at wincontrol.inc:3740
#22 TCUSTOMFORM__UPDATESHOWING((TCUSTOMFORM) 0xb7254840) at customform.inc:1937
#23 TWINCONTROL__UPDATECONTROLSTATE((TWINCONTROL) 0xb7254840) at wincontrol.inc:5486
#24 TWINCONTROL__CMVISIBLECHANGED({MSG = 45067, WPARAM = 1, LPARAM = 0, RESULT = 0, WPARAMLO = 1, WPARAMHI = 0, LPARAMLO = 0, LPARAMHI = 0, RESULTLO = 0, RESULTHI = 0}, (TWINCONTROL) 0xb7254840) at wincontrol.inc:7144
#25 SYSTEM_TOBJECT_$__DISPATCH$formal at :0
#26 TWINCONTROL__GETDEVICECONTEXT(45067, (TWINCONTROL) 0xb7254840) at wincontrol.inc:7127
#27 TWINCONTROL__WNDPROC({MSG = 45067, WPARAM = 1, LPARAM = 0, RESULT = 0, WPARAMLO = 1, WPARAMHI = 0, LPARAMLO = 0, LPARAMHI = 0, RESULTLO = 0, RESULTHI = 0}, (TWINCONTROL) 0xb7254840) at wincontrol.inc:4651
#28 TCUSTOMFORM__WNDPROC({MSG = 45067, WPARAM = 1, LPARAM = 0, RESULT = 0, WPARAMLO = 1, WPARAMHI = 0, LPARAMLO = 0, LPARAMHI = 0, RESULTLO = 0, RESULTHI = 0}, (TCUSTOMFORM) 0xb7254840) at customform.inc:951
#29 TCONTROL__PERFORM(45067, 1, 0, (TCONTROL) 0xb7254840) at control.inc:1015
#30 TCONTROL__SETVISIBLE(true, (TCONTROL) 0xb7254840) at control.inc:3265
#31 TCUSTOMFORM__SETVISIBLE(true, (TCUSTOMFORM) 0xb7254840) at customform.inc:338
#32 TCUSTOMFORM__ENDFORMUPDATE((TCUSTOMFORM) 0xb7254840) at customform.inc:728
#33 TCUSTOMFORM__CREATE((^TCOMPONENT) 0xb748f020, (POINTER) 0x1, (TCUSTOMFORM) 0xb7254840) at customform.inc:1371
#34 TAPPLICATION__CREATEFORM(0x839bb24, void, (TAPPLICATION) 0xb748f020) at application.inc:1607
#35 main at asuba.lpr:24

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:

Beitrag von Christian »

Das schaut ja wirklich recht böse aus, der Fehler scheint irgendwo im dbgrid aufzutreten. Und das schon wärend des Formcreate. Was hast du denn auf der Form ? Kannst du das Projekt eventuell mal zippen und anhängen ?
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

_ny
Beiträge: 40
Registriert: Do 18. Okt 2007, 13:40

Beitrag von _ny »

sorry... war bis eben nicht auf Arbeit :)

Nun, die gute Nachricht ist, ich habe den Fehler gefunden: Es war tatsächlich ein DBGrid. Ich hab einfach nach und nach kritische Komponenten gelöscht und neu kompiliert.

Die schlechte Nachricht - Lazarus macht was es will. Ich hab nach meiner Lösch-Such-Aktion natürlich nicht gespeichert, dennoch ist nun die hälfte meiner Formen leer. Bei knapp 100 fehlenden Komponenten ist das n lustiger Spass... die nun wieder zu rekonstruieren.

Hab ich schon erwähnt, wieviel Spass mir Lazarus macht?

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:

Beitrag von Christian »

Nicht nachvollziehbar für mich.
Auch nicht warum man solch angeblich so grosse Projekte nicht backupt.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

_ny
Beiträge: 40
Registriert: Do 18. Okt 2007, 13:40

Beitrag von _ny »

...mach ich täglich einmal, aber der Umgang mit Lazarus gebietet mir wohl, das minütlich zu tun.

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:

Beitrag von Christian »

Du musst es nicht benutzen und Meckerei bringt auch nichts, es ist Open Source und somit hast du alle Möglichkeiten die probleme die du hast selbst aus der Welt zu schaffen. Wenn dir dazu der Horizont fehlt kannst du gern ein Kopfgeld auf den Bug aussetzen.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Antworten