Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   FreePascal (https://www.delphipraxis.net/74-freepascal/)
-   -   Hänger bei Zugriffsverletzung (https://www.delphipraxis.net/179350-haenger-bei-zugriffsverletzung.html)

MStoll 1. Mär 2014 15:35

Hänger bei Zugriffsverletzung
 
Hi,

mir ist ein entscheidender Unterschied zwischen dem Delphi und dem FreePascal-Compiler aufgefallen:
- wenn eine Exception gefangen wird, die durch eine Zugriffsverletzung entsteht, so hängt ein GUI-Programm, das mit Lazarus/FreePascal erstellt wurde, ein paar Sekunden, während ein mit Delphi compiliertes gleiches Programm einfach direkt weiterläuft.

Weiß jemand, warum das so ist und ob man dagegen irgendetwas tun kann?

Generell scheint mir ja FreePascal bei Zugriffsverletzungen weniger kulant als Delphi, was man beispielsweise auch merkt, wenn man Formulare in einer DLL erzeugt. Delphi: keine Probleme, Lazarus: Totalabsturz.

Viele Grüße
Michael

himitsu 1. Mär 2014 15:58

AW: Hänger bei Zugriffsverletzung
 
Zitat:

ob man dagegen irgendetwas tun kann?
Einfach keine Exception auftreten lassen?


Eine Ausnahme sollte nicht zur Regel werden und schon stört es nicht mehr.

MStoll 1. Mär 2014 16:09

AW: Hänger bei Zugriffsverletzung
 
Ja, wenn das so einfach wäre, würde ich das so tun...

Aber wenn man ein hochgradig nebenläufiges Programm hat, das mal eben 10 Stunden am Stück Daten sammeln und verwerten soll, die aus verschiedenen Quellen kommen und an verschiedene Stellen verteilt werden sollen, dann würde ich gerne auf solche Ausnahmen (und die Regel ist das nicht, sondern wirklich die Ausnahme...) vorbereitet sein. Denn Hänger oder Totalabstürze können dazu führen, dass wichtige Daten nicht rechtzeitig abgearbeitet werden können, nur weil evtl. mal in einem weniger wichtigen Zusatzmodul des Programms, das vielleicht nur für eine Visualisierung der Daten zuständig ist, eine Zugriffsverletzung passiert.

Denn es ist nunmal nicht ganz leicht, ein nebenläufiges Programm zu entwickeln, dass gleichzeitig effizient, flexibel und pannenfrei läuft. Da wäre auf dem Weg zum echt fehlerfreien Programm - was ja das Ziel der Entwicklung ist - ein Plan B, nämlich das Fangen solcher Exceptions im Hintergrund ohne Behinderung des Workflows nicht schlecht. Mit Delphi geht's ja auch.

BUG 1. Mär 2014 18:45

AW: Hänger bei Zugriffsverletzung
 
Zitat:

Zitat von MStoll (Beitrag 1250113)
Aber wenn man ein hochgradig nebenläufiges Programm hat, das mal eben 10 Stunden am Stück Daten sammeln und verwerten soll, die aus verschiedenen Quellen kommen und an verschiedene Stellen verteilt werden sollen, dann würde ich gerne auf solche Ausnahmen (und die Regel ist das nicht, sondern wirklich die Ausnahme...) vorbereitet sein. Denn Hänger oder Totalabstürze können dazu führen, dass wichtige Daten nicht rechtzeitig abgearbeitet werden können, nur weil evtl. mal in einem weniger wichtigen Zusatzmodul des Programms, das vielleicht nur für eine Visualisierung der Daten zuständig ist, eine Zugriffsverletzung passiert.

Ohne jetzt dein konkretes Problem wirklich lösen zu können:
Wenn die Aufgaben des Programms so wichtig ist, darf es keine fehleranfälligen oder schlecht getesteten Programmteile enthalten. Also muss alles, was nicht Missions-kritisch ist, in einen anderen Prozess.

Eventuell könnte es auch helfen, für die Verteilung der Daten auf fertige Message-Broker zu setzten. Da haben sich dann schon andere Leute Gedanken über Sachen wie Ausfallsicherheit und eventuelle Persistenz von Nachrichten gemacht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:10 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz