VO/X# Kombi hängt sich auf

Deutschsprachiges X#-Forum – German language forum

Moderator: wriedmann

Post Reply
lagraf
Posts: 530
Joined: Thu Jan 18, 2018 9:03 am
Location: A

VO/X# Kombi hängt sich auf

Post by lagraf »

Hallo,
ich habe eine VO 2.8 Kassensoftware, die zum Signieren der Umsätze eine von mir anhand einer C# Vorlage geschriebene X# DLL aufruft, welche wiederum 3 externe DLLs aufruft (Gma.QrCodeNet.Encoding.dll, jose-jwt.dll, pcsc-sharp.dll). Bei 5 Rechnern läuft die SW problemlos, bei einem jedoch hängt sich die SW immer wieder mal auf, muss mit TaskManager gekillt werden (Win11, 16GB RAM). Dazwischen läuft die SW aber auch auf diesem Rechner immer wieder 1-3 Tage.

Ich habe in einem Log mitgeschrieben, wie weit die SW kommt. Es sind immer wieder Aufrufe aus der X# DLL, aus denen die SW nicht mehr zurückkommt und zwar immer verschiedene. Um genaueres sagen zu können, müßte ich diese Traces auch in die X# SW einbauen.

Komisch ist, dass die SW oft Tage lang läuft, dann wieder auch manchmal 2x hintereinander hängt.

Gibt es eine Möglichkeit, der VO SW die Aufrufe der X# Routinen und der 3 Fremd DLLs zu erleichtern?
Kann man die DLLs "vorladen" oder "zusammenräumen" nach einem Aufruf?
Wie könnte man dem Problem auf die Schliche kommen?

Danke im voraus!
LG
User avatar
ArneOrtlinghaus
Posts: 495
Joined: Tue Nov 10, 2015 7:48 am
Location: Italy

Re: VO/X# Kombi hängt sich auf

Post by ArneOrtlinghaus »

Ich persönlich würde sagen:
Getrenntes Dotnet-Exeprogramm, das von dem VO-Programm mit Parametern aufgerufen wird und eine Antwortdatei schreibt und sich dann beendet. Das VO-Programm kann dann nach einer bestimmten Wartezeit eine Fehlermeldung ausgeben und unter Umständen auch den zusätzlichen Prozess killen.

Damit hat man die Prozesse klar getrennt und kann viel einfacher Diagnosen erstellen.

Ein Entfernen von Dlls aus einem geöffneten Prozess sollte man nie probieren.

Wir haben auch ähnliche Probleme, dass zum Beispiel Zugriffe auf Microsoft-Exchangeserver regelmäßig sporadisch hängen bleiben und man dann das Programm killen muss. Man kann sonst auch Tage warten, ohne dass es weitergeht. Das passiert vor Allem bei den automatisierten Prozessen. Dann hängt das Programm vielleicht in einem von Hundert oder einem von Tausend Abfragen, ohne dass man genau sehen kann, weshalb. Vor einem halben Jahr habe ich dafür eine "Killer-Funktionen" eingebaut. Man kann pro Ausführungsjob eine Maximalzeit definieren und ein kleines Watchdog-Programm sorgt dann dafür, dass das Programm unsanft beendet und neugestartet wird. Die selben Daten kann dann wieder ohne Probleme abgefragt/aktualisiert werden.

Gruß
Arne
lagraf
Posts: 530
Joined: Thu Jan 18, 2018 9:03 am
Location: A

Re: VO/X# Kombi hängt sich auf

Post by lagraf »

Hallo Arne,
danke für deine Antwort!
Ist deine Vorgehensweise nicht schlecht für Windows, da dessen RAM gerne immer mehr fragmentiert und gefüllt wird? Wäre da ein BatchProgramm, das permanent läuft, nicht interessanter für den X# Job?
LG
lagraf
Posts: 530
Joined: Thu Jan 18, 2018 9:03 am
Location: A

Re: VO/X# Kombi hängt sich auf

Post by lagraf »

Das Ganze ist so schwierig zu greifen, weil die Hangups mal kurz hintereinander, dann wieder nach ein paar Tagen passieren. Und immer wieder bei unterschiedlichen Methoden der in X# definierten Klasse. Und auf 5 anderen Rechnern läuft die SW ohne Probleme.
User avatar
SHirsch
Posts: 301
Joined: Tue Jan 30, 2018 8:23 am
Location: Germany

Re: VO/X# Kombi hängt sich auf

Post by SHirsch »

vielleicht ist auch der PC das Problem oder Viren-/Ransomwarescanner.
lagraf
Posts: 530
Joined: Thu Jan 18, 2018 9:03 am
Location: A

Re: VO/X# Kombi hängt sich auf

Post by lagraf »

Wäre eine Möglichkeit, es ist der McAfee drauf. Bei allen anderen Rechnern, die funktionieren, ist McAfee nicht drauf. Ich lasse ihn mal deinstallieren.
User avatar
ArneOrtlinghaus
Posts: 495
Joined: Tue Nov 10, 2015 7:48 am
Location: Italy

Re: VO/X# Kombi hängt sich auf

Post by ArneOrtlinghaus »

Hallo Franz,

Windows bereinigt so schön Exe-Programme und gibt kaum noch Probleme wegen Defragmentierungen von Hauptspeicher, dass man sich eigentlich keine Sorgen um Verwaltung von Prozessen durch Windows kümmern muss.

Das einzige ist die zusätzliche Zeit, die das Programm benötigt und natürlich auch in Summe etwas mehr Auslastung der Maschine.

Es geht auch gut, ein Programm zu machen, das nicht neugestartet wird. Dann ist halt der Overhead viel größer, um das sicher laufen zu lassen und die Kommunikation mit anderen Programmen ist schwerer.

Unsere Jobserver-Programme starten sich üblicherweise alle 10 Minuten neu, wenn sie nichts zu tun haben. Der Vorteil ist, dass die Abläufe sehr viel stabiler sind in Bezug auf Out of memory und so während der eigentlichen Abarbeitung von Aufgaben.

Es ist die Frage, weshalb das passiert, das du beschrieben hast. Wenn man es lösen kann, um so besser. Wenn die Suche zu schwierig erscheint, muss man halt überlegen, wie man Abläufe durch rauhe Methoden in den Griff bekommt. Unsere Crystal Reports-Aufrufe sind auch solche, die man nicht dauerhaft stabil halten kann.

Gruß
Arne
Post Reply