Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   externe Exception c0000006 (https://www.delphipraxis.net/202018-externe-exception-c0000006.html)

UntoterGeist 18. Sep 2019 22:33

externe Exception c0000006
 
Hatte schon mal das Thema erstellt. Evl. gab es ja einen Fehler beim Erstellen. Zumindest findet man das Thema in der Forensuche und unter Themen mit Beteiligung. Also probiere ich es nochmal. Ein Mod war ja schon da. Hab ich gesehen.

Ich weiß es gibt Tonnen Informationen dazu im Internet mit Google und auch hier im Forum. Habe ich gelesen und verstanden. Wirklich!

Einleitung:

Ich schreibe auf Arbeit mit Delphi 2010 ein Datenbankprogramm mit der mysql.pas und der libmysql.dll. Darin werden nur Unternehmensintern Kundendaten und Lizenzschlüssel der Produkte erstellt und verwaltet. Es wird schon eingesetzt, weil wir "agile Entwicklung ausprobieren". Das bedeutet so alle 1-2 Wochen soll ein neues Release mit neuen Features kommen, die auch alle QM-Konform getestet werden müssen. Eher so jede Woche. Im Moment allerdings nicht.
Nun ist es so, eigentlich schon länger, dass wenn mein Chef das Programm aus dem Netzwerk startet und es einfach laufen lässt, es regelmäßig mal mehr mal weniger zu der Exception c0000006 (sind das genug Nullen?) kommt, wenn man es beenden oder irgendwas anderes machen will. Das Programm läuft bei ihm im Prinzip solange bis es abstürzt. Also auch übers Wochenende und länger. Wenn man das Programm, dass hab ich gefühlt 10k mal getestet, lokal startet kommt kein Fehler. Auch nicht nach 6 Stunden. Der Fehler tritt nur auf und das sehr häufig, wenn ich das Programm aus dem Netzwerk starte, laufen lasse und dann den Rechner mehrfach in den Standby schicke. Und irgendwann dann passiert es dann.
Die .dll wird dynamisch geladen weil's nicht anders geht. Ich hab so gut wie jede Programmzeile, die was mit der Datenbank zu tun hat, geloggt. Beim Beenden schmiert er dann aber beim Versuch ein Objekt freizugeben ab. Es ist immer das erste Objekt, wenn man es stückweise auskommentiert. Das wäre z.B. die Ressource oder das das LibHandle. Oder iwas auch immer danach kommt. Alle Objekte werden auf Nil getestet. Also sie sind in jedem Fall nicht Nil.
Es sind aber nicht nur Datenbankobjekte bei den es abraucht. Manchmal kommt der Fehler auch, wenn Fenster initialisiert werden. Genauer gesagt bei inherited Create(AOwner). Das ist die letzte Zeile die laut Log ausgeführt wird. AOwner ist in dem Fall Self aus dem Hauptfenster, dass regulär erstellt wird. Create wurde überladen, weil ich einen Parameter übergeben muss. Es kommt zwar eine Warnung, dass eine virtuelle Methode verborgen wird, aber es geht "eigentlich". In der mysql.pas kommen mehr Warnungen. Vor allem unsichere Pointer.
Ich habe sogar ein neues Delphi Projekt angelegt zum testen. Das selbe Scenario, die Datenbankobjekte werden beim Start initialisiert, sind nicht nil und beim free raucht es ab, wenn das Programm lange lief. Ich hab sogar ein Projekt angelegt, dass einen verfluchten einfachen Button dynamisch erzeugen soll. Konnte das aber noch nicht genau testen, ob es dann auch abschmiert. Evl. muss es ja auch ein Fenster oder etwas ähnliches sein. Allerdings hab ich keine Idee welches Objekt sonst noch den Parameter Self braucht und komplex genug ist.

Das Problem:

Wie kann ich den verdammten Fehler auflösen? Programm geht nicht!

Ich weiß, dass es die Kompileranweisungen gibt bei der das gesamte Programm in die Auslagerungsdatei geladen wird. Und wisst ihr was, der Fehler ist bei mir in der Experimental bisher nicht mehr aufgetreten. Egal was ich gemacht habe. Mir wurde aber praktisch verboten diese Anweisung zu benutzen, weil daran kann es nicht liegen. Außerdem wäre diese Methodik Try and Error und das geht überhaupt nicht. Und diese Anweisung wäre Missbrauch der Auslagerungsdatei. Das Netzwerk kann auch nicht schuld sein, weil: Dann müsste das ja größere Bahnen ziehen.

Der Fehler muss also im Code liegen und den Objekten die ich nicht sauber erstelle und Freigebe. Der Fehler liegt also bei mir und meinem Code! Den ich jetzt durchprüfen darf, weil da sind tausend Stellen die nicht sauber sind! Wirklich der ganze Code ist schrott!

Was soll ich jetzt eigentlich noch machen außer evl. Kündigen. Aber ansonsten ist alles tipitopi :thumb:

Hat jemand ne Idee was ich jetzt noch tun könnte?

Dalai 18. Sep 2019 22:48

AW: externe Exception c0000006
 
Das klingt mir danach, dass die PE Flags IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP und IMAGE_FILE_NET_RUN_FROM_SWAP helfen könnten. Siehe PE (Portable Executable) Header-Flags (Delphi).

Beispiel:
Delphi-Quellcode:
{$SetPEFlags IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP}
{$SetPEFlags IMAGE_FILE_NET_RUN_FROM_SWAP}
[EDIT]
Siehe auch hier bei StackOverflow: https://stackoverflow.com/questions/...-terminal-serv
[/EDIT]

Grüße
Dalai

UntoterGeist 18. Sep 2019 23:07

AW: externe Exception c0000006
 
Danke für die schnelle Antwort.

Aber das ist genau das, was ich in der Experimental gemacht habe. Und wie ich geschrieben hab, hat das "scheinbar" funktioniert, aber ich darf die Lösung so nicht umsetzten. Ich soll den Fehler im Code finden. Und ich befürchte einfach, dass ich das nicht kann. Weil es eben daran liegt das Programmteile aus dem Netzwerk nachgeladen werden sollen und der Zugriff durch irgendwas gestört ist. Mein Chef ist aber der Überzeugung, dass alles, also das gesamte Programm, in den RAM geladen wird und es deshalb keine Fehler geben könnte. Es muss also an mir und meinem Code liegen, so er.

Ich sehe gerade wie das Vertrauen in meine Fähigkeiten zerbröselt. Denn wir haben noch ein anderes Projekt an dem ich arbeiten soll und eigentlich muss.

samso 18. Sep 2019 23:34

AW: externe Exception c0000006
 
Werden die Datenbankverbindungen über die gesamte Laufzeit des Programms offen gehalten, oder wird bei jeder Benutzung der Datenbank die Verbindung neu initialisiert? Hast Du im Blick, dass der MySql-Server eine Verbindung die 8 (defaultwert) Stunden nicht genutzt wurde, einfach trennt?

UntoterGeist 18. Sep 2019 23:56

AW: externe Exception c0000006
 
Die Verbindung zur Datenbank wird standardmäßig schon nach ca. 10 Minuten vom Server getrennt. Gab früher schon mal Probleme damit. Es wird in einem Timer im Hauptmenu geprüft, ob die Verbindung noch steht, wobei man sich das schenken könnte, weil vor jeden Query die Verbindung mit ping geprüft und neu aufgebaut wird wenn es sein muss. Im Fehlerfall wird man auch ins Hauptmenu zurück geschickt. Sprich es wird ein Error zurück gegeben und nichts weiter ausgeführt. Ist inzwischen alles soweit verschachtelt. Im Prinzip muss die Verbindung nicht offen gehalten werden. Die Lib wird natürlich nicht neu eingebunden. Aber bei Free crasht es dann. Auch wenn vor Stunden und auch sonst noch alles lief.

Das assigned prüft ja auch nur auf Nil. Aber nicht, ob der Pointer noch gültig ist. Und da scheint das Problem zu sein. Die Objekte scheinen auf wundersame Weise ungültig zu werden und der Zeiger zeigt halt nur auf die Stelle die jetzt fremd belegt wird. Ich setzte auch die Pointer manuell auch Nil nach dem Free. Es sind auch nur 3 Funktionen was die Datenbank betrifft wo das passiert also recht überschaubar.

Dalai 19. Sep 2019 00:27

AW: externe Exception c0000006
 
Tja, nun, ein Programm wird aber nicht komplett in den Speicher geladen, weder unter Windows noch unter Linux, noch nicht einmal, wenn man die genannten PE-Flags setzt; die Flags sorgen nur dafür, dass das Programm aus dem Swap läuft statt vom Netzwerk/Wechseldatenträger, d.h. fehlende Pages kommen von der lokalen Platte statt vom ursprünglichen Ort. Dasselbe trifft auch auf DLLs zu. Will sagen: Wenn du die Flags setzt, dann muss das in allen beteiligten Teilen passieren. Wenn du Fremd-DLLs eingebunden hast, wird das schwierig bis unmöglich; dann könnte nur ein dynamisches Laden und Entladen der DLLs helfen.

Netzwerkverbindungen werden nun einmal getrennt, wenn man den Rechner schlafen legt. Und bei einem vom Netz laufenden Programm die Netzwerkverbindung zu trennen, führt dann sehr gern zu völlig unvorhergesehenem Verhalten und/oder Abstürzen (wie ich erst gestern selbst erleben durfte als ich ein Netzwerkkabel rausgezogen hatte...).

Grüße
Dalai

UntoterGeist 19. Sep 2019 00:44

AW: externe Exception c0000006
 
Zitat:

Zitat von Dalai (Beitrag 1446973)
Tja, nun, ein Programm wird aber nicht komplett in den Speicher geladen

Das erzähl mal meinem Chef. Für ihn ist das nicht mehr als ein Hello World Programm. Und das muss ja vollständig in den RAM geladen werden. Das hat er gestern (inzwischen) noch mal deutlich gesagt Mein Kollege geht da völlig d'accord. Und der hat das studiert! Woher die Gewissheit kommt weiß ich nicht. Entschuldigt meine Abfälligkeit. Aber ich bin etwas niedergeschlagen. Das Schlimmste ist das, Dalai, dein Vorschlag funktioniert, aber dieser abgelehnt wird. Aus genannten Gründen. Inzwischen wird mir auch so auf die Tastatur geschaut, dass ich mich nicht mehr wohl fühle. Alles scheint potentiell Falsch zu sein und ich muss alles doppelt und dreimal prüfen.

Das es tausende Beiträge zu dem Thema gibt ist auch nur die Bestätigung das es so nicht sein kann. Ich glaub das ist eig. mehr ein soziales Problem. Weil ich würde die Flags einfach setzten und das eine Woche testen. Für meinen Chef ist so eine Methodik aber unprofessionell.

mensch72 19. Sep 2019 06:02

AW: externe Exception c0000006
 
Einfache & pragmatische Lösung:
- mache eben wie "gewollt" das Programm ohne besondere PE Flags
- binde die EXE als Resource in ein zusätzliches kleines "FullfileLoaderProgramm" ein
- kopiere also im Loaderprogramm einfach nur 1x die Resource in z.B. das lokale "ProgrammData" Verzeichnis, starte die EXE dort "lokal" via ShellExecute und beende das Loaderprogramm

So startet dein Chef bei ja aktivem Netzwerk problemlos das "LoaderProgramm", es lädt wegen Zugriff auf die riesige Resource definitiv 1x komplett vom Netzwerk auf den PC(wie er ja unbedingt will) und ab da läuft es dann wie er ja auch will lokal...

=> Chefe hat seinen Willen und Programm funktioniert:)

samso 19. Sep 2019 07:18

AW: externe Exception c0000006
 
Zitat:

Zitat von mensch72 (Beitrag 1447011)
Einfache & pragmatische Lösung:
- mache eben wie "gewollt" das Programm ohne besondere PE Flags
- binde die EXE als Resource in ein zusätzliches kleines "FullfileLoaderProgramm" ein
- kopiere also im Loaderprogramm einfach nur 1x die Resource in z.B. das lokale "ProgrammData" Verzeichnis, starte die EXE dort "lokal" via ShellExecute und beende das Loaderprogramm

So startet dein Chef bei ja aktivem Netzwerk problemlos das "LoaderProgramm", es lädt wegen Zugriff auf die riesige Resource definitiv 1x komplett vom Netzwerk auf den PC(wie er ja unbedingt will) und ab da läuft es dann wie er ja auch will lokal...

=> Chefe hat seinen Willen und Programm funktioniert:)

So einfach wird es nicht sein. Die Kollegen scheinen sich ja sehr genau anzuschaun was da innerhalb des Programms getrieben wird. So wie die ticken, wird ein solches Vorgehen als ein weiterer Beleg für die Unfähigkeit des Programmierers gewertet dieses Problem in den Griff zu bekommen. Schon das Setzen des PE-Flags wird ja als Workaround gewertet. Die Gegenfrage ist doch eigentlich, weshalb gibt es dieses Flag überhaupt, wenn es doch nicht notwendig ist.

Kennt jemand vielleicht ein Tool, dass so eine Art Speicherauszug erzeugt. Es wäre ja schön, wenn man zeigen könnte, welche Teile des Programms tatsächlich im RAM liegen und welche Teile sich nur auf dem Netzwerklaufwerk befinden und bei Bedarf von dort nachgeladen werden.

Alternativ würde ich versuchen das Fehlerbild mit einem aufwändigen Versuchsaufbau zu reproduzieren. Dazu ist es zunächst notwendig den Speicherort der Exe und den SQL-Server auf unterschiedlichen Netzwerkrechnern zu halten. Nun würde ich versuchen durch Trennen der Netzwerkverbindung des "Exe-Hosts" den Swap-Fehler zu provozieren. Wenn das möglich ist, zeigt mir das, dass der Fehler nicht dadurch hervorgerufen wird, dass die Netzwerkverbindung zum SQL-Server abbricht, sondern dass es nur etwas mit den auslagerten Teilen der ausführbaren Datei zu tun hat.

hoika 19. Sep 2019 07:29

AW: externe Exception c0000006
 
Hallo,
lass Deine Kollegen #2 ausgiebig durchlesen.
Und wenn Sie das nicht begreifen, komm zu uns ;)

Das Problem ist der Server, nicht dein Programm.

Google "delphi c0000006 network"

http://devzone.advantagedatabase.com...No=101230-2385
Unten steht dort der MS-Hotfix dafür.

sahimba 19. Sep 2019 09:29

AW: externe Exception c0000006
 
Zitat:

Zitat von UntoterGeist (Beitrag 1446985)
Für meinen Chef ist so eine Methodik aber unprofessionell.

Dein Chef hat keine Ahnung, verweigert sich einer Diskussion und versucht, ebenso wie Dein Kollege, sich mittels angeblicher Autorität durchzusetzen. Das ist in der Tat ein soziales Problem und ich würde nicht davon ausgehen, dasss Du das in absehbarer Zeit lösen wirst. Streck Deine Fühler nach anderen Arbeitsstellen aus.

Bbommel 19. Sep 2019 10:09

AW: externe Exception c0000006
 
Ich hänge mich auch noch mal kurz dran, um zu bestätigen, dass die Flags hier durchaus die richtige Lösung sind. Das hat auch nichts mit schlechter Programmierung oder mit "Missbrauch" der Auslagerungsdatei (Alter, ernsthaft?) zu tun (ob ansonsten in deinem Code irgendwas schlecht programmiert ist, können wir natürlich nicht beurteilen ;-) ), sondern ist je nach Netzwerkkonstellation einfach notwendig, wenn ein Programm direkt von einer Netzwerk-Freigabe ausgeführt werden soll.

Wir haben auch eine große Anwendung, die bei den meisten Kunden vom Netzwerklaufwerk gestartet wird und hatten früher ötfer den c000006-Fehler. Seitdem wir (seit mittlerweile sehr vielen Jahren) diese Flags benutzen, ist das nie wieder aufgetaucht.

Wenn deine Chefs/Kollegen dich die passende Lösung nicht umsetzen lassen, dann wissen die entweder mehr als wir oder es ist vielleicht wirklich Zeit für einen Wechsel. :-)

freimatz 19. Sep 2019 10:35

AW: externe Exception c0000006
 
Sehe ich auch so. Leider.
Nimm Dir einen Tag Urlaub und ab zu https://forentage.de/?page_id=923

Sherlock 19. Sep 2019 10:40

AW: externe Exception c0000006
 
Zitat:

Zitat von sahimba (Beitrag 1447036)
Zitat:

Zitat von UntoterGeist (Beitrag 1446985)
Für meinen Chef ist so eine Methodik aber unprofessionell.

Dein Chef hat keine Ahnung, verweigert sich einer Diskussion und versucht, ebenso wie Dein Kollege, sich mittels angeblicher Autorität durchzusetzen. Das ist in der Tat ein soziales Problem und ich würde nicht davon ausgehen, dasss Du das in absehbarer Zeit lösen wirst. Streck Deine Fühler nach anderen Arbeitsstellen aus.

Dem ist eigentlich sonst nichts hinzuzufügen. Mit solchen Streßfabriken sollte man sich freiwillig nicht länger als unbedingt nötig umgeben.

Es gibt dann noch einen guten Abschiedsgruß: "Wenn Du willst, daß es so gemacht wird, wie Du es willst, mach es selbst."

Sherlock

mensch72 19. Sep 2019 10:51

AW: externe Exception c0000006
 
Es reicht wahrscheinlich sogar ein kleiner Hintergrundthread, welcher die EXE ständig "readonly" geöffnet hält und aus lauter LangeWeile 1x pro Minute z.B. einen MD5 Hash über das komplett eingelesene EXE-File neu berechnet.
Das ist nix böses, sondern ein ganz normaler Schutz gegen so Experten, welche die Datei einer laufenden EXE umbenennen und dann ne neue Datei an den Platz der alten kopieren(denn ja, das geht teilweise).

Wenn ein File ständig "offen" ist und regelmäßig voll gelesen wird,
- dann ist es 1. von außen einigermaßen Sicher gegen umbenennen und löschen geschützt
- und es ist und bleibt 2. sicher im lokalem FileSystemCache... wenn in der EXE Große selten benutzte Resourcen stecken, dann hilft diese Methode den Zugrif hierauf zeitlich vorhersehbar zu gestalten... selbst bei großen selten benutzten Delphiformularen(welche nicht schon beim Start unsichbar erzeugt werden) hilft das.


Aber:
Ein Chef hat per Weisung halt das Recht auch fachlich sinnlose Vorgaben zu machen, nur rechtlich verbotenes darf man als Mitarbeiter verweigern.
Als Mitarbeiter muss man einfach nur immer im Rahmen der (eigenen)Möglichkeiten und (gesetzten)Grenzen die bestmögliche Lösung anstreben... oder gehen.

UntoterGeist 24. Sep 2019 01:38

AW: externe Exception c0000006
 
Hab mir jetzt einfach mal ein paar Tage Abstand gegönnt um gedanklich davon mal weg zu kommen. Aber selbst wenn ich diese ungültigen Objekte, die ja nicht Nil sind, irgendwie mit einer hypothetischen Methode erfragen könnte, Assigned macht das ja nicht, selbst dann würde mir das nichts nützen. Das Programm wäre in einem Fehlerzustand und müsste beendet werden. Ich würde die Fehler nur abfangen, aber so richtig drauf reagieren kann man ja nicht, wenn sogar Self des Hauptmenus ungültig ist. Was will man da machen?

Ich muss aber sagen ich programmiere erst seit 2 einhalb Jahren richtig mit Delphi. Alle Eigenheiten kann man da nicht kennen. Und das kann schon was aus machen. Kann mir aber auch nicht vorstellen, das ich fundamental so viel falsch mache, wovon wohl gerade ausgegangen wird, dass es zu so einem Fehler kommt. Der auch noch zu genüge dokumentiert ist. Ich bin jetzt auch nicht so paranoid, dass ich jede Zeile mit Assigned und sonst was absicher. Manchmal muss man ja auch darauf vertrauen, dass das was man da macht auch richtig ist. Und selbst wenn, weiß man halt auch nur wieder, dass was falsch ist. Und das muss man ohnehin ändern dann. Es ändert sich nur die Fehlermeldung.

Das letzte war, das mein Log eher Fehlerhaft ist und es da abschmiert, als das ein VLC Objekt nicht richtig funktioniert. Das mag sein, aber mit einem ungültigen Self Parameter schmiert halt alles ab. Unwichtig was es ist. Das scheint nicht angekommen zu sein. Mir fehlen scheinbar die entsprechenden Softskills, um mich in diesen unsäglichen Diskussionen durchzusetzen. Es ist ja auch nicht alles schlecht hier. Aber diese ewige Diskutiererei bis zum Tod umfallen ist mir zu viel. Und da ich sowieso weiß, dass das Wissen nur Glauben ist zu Wissen werden meine Argumente von Natur aus schwächer. Ich kann mich halt nicht in die "ich weiß es ganz genau" Hängematte legen und sagen "Das ist so". Diese Unsicherheit ist halt immer da. Und es wird ja auch bestätigt. Dinge ändern sich, so auch Windows. Ist halt kein 1990 mehr wo alles in den Ram geladen wird und man das System neu booten muss nur um Indiana Jones zu spielen. Weiß ich das? Kann mir nie sicher sein!

Aber eins weiß ich: Ich sehe das Fehlerbild und interpretiere es, nach besten Wissen und Gewissen. Und alle meine Synapsen sträuben sich wenn das ignoriert wird.

Ansonsten nochmal Danke für die vielen Antworten. Aber manche Umsetzungen gehen halt einfach nicht. Es wäre ja auch nur eine Zeile einzufügen.

TiGü 24. Sep 2019 09:06

AW: externe Exception c0000006
 
Ich weiß ja nicht, in welcher Gegend du lebst und arbeitest, aber wenn das nun nicht gerade die hinterletzte Pampa ist, dann findest du auch einen neuen Job.
Solche Besserwisser, die nicht das Problem ergooglen können und dann dir die richtige Lösung madig machen, brauchst du nicht ertragen.

Schreib doch mal dein Gebiet ins Profil rein, vielleicht ergibt sich was.
Ein aussagekräftiges XING- und LinkedIn-Profil das für Recruiter auf "Suche Job" steht, bringt auch ein paar Zuschriften.

freimatz 24. Sep 2019 12:58

AW: externe Exception c0000006
 
Nein! Dann liest das sein Chef und es gibt Ärger.
(Bei uns, so weit im Süden wo schon nicht alle Muttersprache deutsch haben, haben leider gerade Einstellungsstopp)

TiGü 24. Sep 2019 16:16

AW: externe Exception c0000006
 
Zitat:

Zitat von freimatz (Beitrag 1447684)
Nein! Dann liest das sein Chef und es gibt Ärger.

Was jetzt? Das Profil in einem beruflichen sozialen Netzwerk?
Das kann man so einstellen, dass nur Recruiter/Personaler, d.h. nicht normale Nutzer sehen können, das man eine neue Herausforderung sucht.

hoika 24. Sep 2019 17:16

AW: externe Exception c0000006
 
Hallo,
also auch wir hatten das Problem mit der Exception.
Es ist ein Bug der Netzwerk-Services von MS.
Man könnte auch den Server patchen, würde ich aber lassen.
Eine Zeile PE-Flag -> erledigt.

Hier noch ein interessanter Link:
https://stackoverflow.com/questions/...-terminal-serv

Du darfst meinen Beitrag gerne Deinem Chef geben ...

UntoterGeist 26. Sep 2019 22:04

AW: externe Exception c0000006
 
Dass das Netzwerk eins weg hat, hab ich schon gemerkt. Passiert mir auch bei offenen Word Dokumenten, dass die nach dem Standby in der Mittagspause abschmieren. Mal mehr mal weniger.

Aber ich hab heute mal ein Testprogramm laufen lassen, dass modale Fenster und Buttons dynamisch erzeugt. Konnte aber keinen Absturz provozieren. Ich hab das in der selben Art und Weise gemacht wie im Projekt. Ein anderes Testprojekt, dass nur die libmysql.dll dynamisch einbindet stürzt dagegen regelmäßig ab. Lässt sich sehr schnell realisieren. Es ist dabei immer noch so, dass alle erzeugten Objekte irgendwie nicht mehr gültig sind, aber zuvor auch nicht freigegeben wurden.
Liegt's evl. an dem Umfang des Projektes? Die dll wird zwar dynamisch eingebunden, aber ist doch bisschen größer. Wenn da wirklich was falsch ist bei mir, so wie ich das einbinde, wieso wird dann auch Self des Hauptfensters ungültig?

Ich hab im Moment nicht so richtig die Wahl. Ich muss das analytisch und methodisch korrekt durchziehen. Ist halt alles reguliert nach X verschiedenen Normen die erfüllt werden müssen hier. Und wovon ich irgendwie kaum Ahnung habe. Bin halt nur ein kleiner Fachinformatiker. :roll: Aber das heißt vor allem, meinen eigenen Code zu prüfen. Wenn es da tatsächlich ne Lösung gibt wäre das ja Toll. Ich würde mich ja freuen, wenn ich da was finde. Aber ich bin da nicht ganz so zuversichtlich wie die anderen. Irgendwann muss ja auch mal der Knoten platzen und andere externe Ursachen mehr Gewicht bekommen. Einfach damit das nur mal in Erwägung gezogen wird.

TiGü 27. Sep 2019 07:00

AW: externe Exception c0000006
 
Die Lösung wurde schon in Beitrag #2 genannt.
Die Annahme deines Chefs aus Beitrag #3 ist sachlich falsch. Die EXE wird nicht vollständig in den RAM geladen.
Dies kann man in Windows am Einfachsten umgehen, indem du die genannten PE-Flags setzt.

Ist dir denn grundsätzlich klar, warum das so unter Windows ist oder sollen wir das nochmal versuchen in einfachen Worten zu erklären?

Als Einstieg, später gerne mehr:
https://stackoverflow.com/questions/...-when-launched

UntoterGeist 29. Sep 2019 00:08

AW: externe Exception c0000006
 
Ich habe prinzipiell alles verstanden. Nur lehnen die Lösung meine Mitarbeiter das ab. Es gilt halt den Programmfehler zu finden. Und so wie es aktuell aussieht, ist die Einbindung der dll dafür verantwortlich. Wenn ich auf magische Weise das wirklich gelöst bekommen sollte, lass ich wissen, dass das Problem auch andere Ursachen haben kann.

Sherlock 30. Sep 2019 08:32

AW: externe Exception c0000006
 
Alter Falter, Deinem Betrieb muss es ausgezeichnet gut gehen, wenn die so viel Zeit haben bei einem klitzigkleinen, eigentlich akademischen Problem so ein Faß aufzumachen. Setz das PE-Flag, sag Du hast den DLL-Zugriff gefixt und weiter mit der Arbeit. Wenn es einer anders lösen möchte, soll er es in Gottes Namen tun, aber es muss doch wirklich wichtigeres geben, als diesem altbekannten Problem eine neue Lösung aufdrücken zu wollen (ohne es selber zu tun).

Bist Du Azubi und die erlauben sich einen Spaß, oder bist Du regulärer Angestellter und die wollen Dich rausekeln?

Sherlock

TiGü 30. Sep 2019 12:12

AW: externe Exception c0000006
 
Pflichte Sherlock bei.
Wie weiter oben schon vorgeschlagen kannst du das dann nur so lösen, dass das Programm startet, ggf. prüfst, ob du von einen Netzlaufwerk läufst, dann im ersten Begin in der DPR alle notwendigen Dateien vom Netzlaufwerk auf das lokale Temp-Verzeichnis kopierst, die EXE von dort startest und davor gestartete Instanz beendest.
Anderes geht es nicht.

Hast du deinen Kollegen denn schon mal all die Doku und Posts gezeigt, die wir hier fleißig verlinken?


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:28 Uhr.

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