Wie komme ich einer externen SIGFPE auf die Schliche?

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Antworten
Benutzeravatar
theo
Beiträge: 8706
Registriert: Mo 11. Sep 2006, 19:01

Wie komme ich einer externen SIGFPE auf die Schliche?

Beitrag von theo »

Hallo

Ich experimentiere mit der Komponente HtmlViewer https://github.com/BerndGabriel/HtmlViewer für mein kleines Pop3 Vorschauprogramm.
Grundsätzlich funktioniert die Komponente für diesen Zweck erstaunlich gut.
Die fehlenden Bilder auf dem Screenshot sind nur, weil ich kein Nachladen von externen Inhalten zulasse.
Bilder im Mail-Attachment werden angezeigt.

Egal, die allgemeine Frage ist: Wie komme ich einer externen SIGFPE auf die Schliche?
Der Fehler entsteht erst beim Scrollen der Komponente.
Ich wüsste also nicht, wo ich einen BP setzen sollte.

Obwohl unter dem Debugger, wird mir nichts Brauchbares angezeigt. Auch der Stacktrace führt zu nichts.
Welche Möglichkeiten habe ich, um dem Fehler zu finden?

Danke.
Dateianhänge
lazsigfpe.png
lazsigfpe.png (86.94 KiB) 496 mal betrachtet

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

Re: Wie komme ich einer externen SIGFPE auf die Schliche?

Beitrag von wp_xyz »

Wenn ich zum Debuggen in Package-Units eintauchen muss, dann setze ich in den Projekt-Optionen immer unter "Hinzufügungen und Beeinflussungen" die benutzerdefinierte Option -gw2 (o.ä); damit werden alle verwendeten Packages mit Debug-Informationen (hier: Dwarf-2) übersetzt, und der Code der Units in Packages ist für den Debugger erreichbar.

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

Re: Wie komme ich einer externen SIGFPE auf die Schliche?

Beitrag von theo »

Danke für die Antwort.
Aber "external" meint in diesem Fall wohl irgendwo in den GTK2 Libs o.ä. und nicht im Pascal Code.
Ich denke deshalb nicht, dass ich mit -gw2 weiter komme.

Danke.

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

Re: Wie komme ich einer externen SIGFPE auf die Schliche?

Beitrag von wp_xyz »

theo hat geschrieben:
Di 19. Okt 2021, 17:52
Aber "external" meint in diesem Fall wohl irgendwo in den GTK2 Libs o.ä. und nicht im Pascal Code.
Habe gerade folgenden Code probiert:

Code: Alles auswählen

var
  x: Integer;
  ...
  x := 0;
  x := 1 div x; 
und da bekomme ich "Projekt project1 hat Exception-Klasse »External: SIGFPE« ausgelöst." Also das "External" würde ich nicht allzu wörtlich nehmen.

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

Re: Wie komme ich einer externen SIGFPE auf die Schliche?

Beitrag von theo »

Zeigt dann auch Stacktrace nichts an?
Ich sehe nur dies:
Dateianhänge
stacktr.png
stacktr.png (25.77 KiB) 483 mal betrachtet

Socke
Lazarusforum e. V.
Beiträge: 2968
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Wie komme ich einer externen SIGFPE auf die Schliche?

Beitrag von Socke »

wp_xyz hat geschrieben:
Di 19. Okt 2021, 17:58
Also das "External" würde ich nicht allzu wörtlich nehmen.
Das "External" heißt wörtlich: Nicht im Pascal-Quelltext. In diesem Fall ist es das Betriebssystem, das eine Exception der CPU/FPU an dein Programm weiterleitet. In welchem Programmteil die Exception aufgetreten ist, steht damit gar nicht fest, da dies interner oder externer Code sein kann - solange die Exception nicht abgefangen wurde.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

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

Re: Wie komme ich einer externen SIGFPE auf die Schliche?

Beitrag von theo »

Hmm, interessanterweise bekomme ich, wenn ich das Programm direkt aus der Shell ohne Debugger starte ein paar Hinweise auf der Shell.
Innerhalb der IDE aber gar nichts.
ExtCreatePen not implemented yet
BeginPath not implemented yet
EndPath not implemented yet
StrokePath not implemented yet
ERROR in code: TGtk2WidgetSet.DeleteObject invalid GdiObject=14061656
Creating gdb catchable error:

$00000000005FEDAA
$00000000007B5C46 DRAW, line 8603 of ../source/HTMLSubs.pas
$00000000007B7360 DRAW, line 8954 of ../source/HTMLSubs.pas
$00000000007C1F3C DRAWTABLE, line 10435 of ../source/HTMLSubs.pas
$00000000007BFF29 DRAW1, line 10673 of ../source/HTMLSubs.pas
$00000000007A95D6 DRAWTHELIST, line 6057 of ../source/HTMLSubs.pas
$00000000007A9191 DRAWBLOCK, line 6008 of ../source/HTMLSubs.pas
$00000000007A7D11 DRAWASBLOCK, line 5803 of ../source/HTMLSubs.pas
$00000000007A7318 DRAW1, line 5826 of ../source/HTMLSubs.pas
ERROR in code: TGtk2WidgetSet.DeleteObject invalid GdiObject=14061656
Creating gdb catchable error:

$00000000005FEDAA
$00000000007B5C46 DRAW, line 8603 of ../source/HTMLSubs.pas
$00000000007B7360 DRAW, line 8954 of ../source/HTMLSubs.pas
$00000000007C1F3C DRAWTABLE, line 10435 of ../source/HTMLSubs.pas
$00000000007BFF29 DRAW1, line 10673 of ../source/HTMLSubs.pas
$00000000007A95D6 DRAWTHELIST, line 6057 of ../source/HTMLSubs.pas
$00000000007A9191 DRAWBLOCK, line 6008 of ../source/HTMLSubs.pas
$00000000007A7D11 DRAWASBLOCK, line 5803 of ../source/HTMLSubs.pas
$00000000007A7318 DRAW1, line 5826 of ../source/HTMLSubs.pas
ExtCreatePen not implemented yet
BeginPath not implemented yet
EndPath not implemented yet
StrokePath not implemented yet
ERROR in code: TGtk2WidgetSet.DeleteObject invalid GdiObject=14061656
Creating gdb catchable error:

ETC ETC

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

Re: Wie komme ich einer externen SIGFPE auf die Schliche?

Beitrag von theo »

OK, hab's gefunden.
Das Problem ist tatsächlich auf line 8603 of ../source/HTMLSubs.pas.
Wenn ich dort auskommentiere, kackt er nicht mehr ab.
Jetzt muss ich nur noch herausfinden, warum das so ist.

Danke!

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

Re: Wie komme ich einer externen SIGFPE auf die Schliche?

Beitrag von theo »

So, jetzt geht es ein bisschen.
Diese Browser Komponente hat zwar ihre Macken und Grenzen, aber für einen Mail Reader reicht es gerade so und es sieht für mich doch erstaunlich ordentlich aus.
Im Anhang eine Werbemail vom Reifenhändler. :wink:
Dateianhänge
mailread.png
mailread.png (309.9 KiB) 440 mal betrachtet

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 4755
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Niederösterreich
Kontaktdaten:

Re: Wie komme ich einer externen SIGFPE auf die Schliche?

Beitrag von af0815 »

Sieht wirklich brauchbar aus. Und wenn es aufgrund der Einfachheit, Werbepixel und Tracker nicht verarbeitet schon perfekt. :-)

BTW: Mit den CrossClimate Reifen habe ich bisher gute Erfahrung gemacht, auch in Österreich. Nur mit den Dimensionen muss man aufpassen. Der braucht eine gewisse Schulterhöhe, also nichts mit Niederquerschnitt.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 961
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Winux (L 2.0.11 FPC 3.2)
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Wie komme ich einer externen SIGFPE auf die Schliche?

Beitrag von fliegermichl »

Hab das auch grad mal installiert (FPC 3.3.1 Laz 2.3.0)

Ich musste an einigen Stellen Klammern einfügen, damit es compiliert. Dann lief es aber auf Anhieb perfekt.
Den genannten SIGFPE konnte ich nicht erreichen.

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

Re: Wie komme ich einer externen SIGFPE auf die Schliche?

Beitrag von theo »

af0815 hat geschrieben:
Mi 20. Okt 2021, 07:36
BTW: Mit den CrossClimate Reifen habe ich bisher gute Erfahrung gemacht, auch in Österreich. Nur mit den Dimensionen muss man aufpassen. Der braucht eine gewisse Schulterhöhe, also nichts mit Niederquerschnitt.
Ich habe die auch drauf. Hatte keine Lust mehr auf 2x Radwechsel pro Jahr.
Kann nichts Schlechtes darüber sagen.
Wer nicht dringend im Winter in Gebirge rumkraxeln muss, ist damit gut bedient.

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

Re: Wie komme ich einer externen SIGFPE auf die Schliche?

Beitrag von theo »

fliegermichl hat geschrieben:
Mi 20. Okt 2021, 08:50
Hab das auch grad mal installiert (FPC 3.3.1 Laz 2.3.0)

Ich musste an einigen Stellen Klammern einfügen, damit es compiliert. Dann lief es aber auf Anhieb perfekt.
Den genannten SIGFPE konnte ich nicht erreichen.
Naja, die Darstellung ist recht brauchbar für einfache Anforderungen, aber man merkt halt, dass es ein Port von Windows/Delphi ist.
Es hakt überall ein bisschen. Auf Qt läuft's bei mir gar nicht, nur auf GTK2 und dort hat es mir schon mehrfach die IDE abgewürgt. Seither installiere ich es nicht mehr (-> Runtime Package), sondern Create die Komponente im Code.
Gewisse HTML Quellen führen zu Problemen wie SIGFPE. Das konnte ich jetzt flicken, aber es bleibt etwas rätselhaft.
Aber an sich ist die Komponente recht durchdacht.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 4755
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Niederösterreich
Kontaktdaten:

Re: Wie komme ich einer externen SIGFPE auf die Schliche?

Beitrag von af0815 »

Welche Version von https://github.com/BerndGabriel/HtmlViewer verwendet ihr - master oder HtmlViewer-11.9 ?
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

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

Re: Wie komme ich einer externen SIGFPE auf die Schliche?

Beitrag von theo »

Ich habe jetzt 11.9 in Betrieb.
Auf dem OPM kommt noch 11.8

P.S. Auf Qt bekomme ich so etwas auf der Shell angezeigt bevor er abschmiert:

Code: Alles auswählen

QBackingStore::endPaint() called with active painter; did you forget to destroy it or call QPainter::end() on it?
QWidget::repaint: Recursive repaint detected
So etwas ist halt schwierig einzugrenzen.

Lazarus 2.3.0 FPC 3.3.1 x86_64-linux-gtk2

Antworten