AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

externe Exception c0000006

Ein Thema von UntoterGeist · begonnen am 18. Sep 2019 · letzter Beitrag vom 30. Sep 2019
Antwort Antwort
UntoterGeist

Registriert seit: 18. Sep 2019
25 Beiträge
 
#1

AW: externe Exception c0000006

  Alt 18. Sep 2019, 22:07
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.
  Mit Zitat antworten Zitat
samso

Registriert seit: 29. Mär 2009
439 Beiträge
 
#2

AW: externe Exception c0000006

  Alt 18. Sep 2019, 22:34
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?
  Mit Zitat antworten Zitat
UntoterGeist

Registriert seit: 18. Sep 2019
25 Beiträge
 
#3

AW: externe Exception c0000006

  Alt 18. Sep 2019, 22:56
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.
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.683 Beiträge
 
Delphi 5 Professional
 
#4

AW: externe Exception c0000006

  Alt 18. Sep 2019, 23:27
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
  Mit Zitat antworten Zitat
UntoterGeist

Registriert seit: 18. Sep 2019
25 Beiträge
 
#5

AW: externe Exception c0000006

  Alt 18. Sep 2019, 23:44
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.
  Mit Zitat antworten Zitat
mensch72

Registriert seit: 6. Feb 2008
838 Beiträge
 
#6

AW: externe Exception c0000006

  Alt 19. Sep 2019, 05:02
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
  Mit Zitat antworten Zitat
samso

Registriert seit: 29. Mär 2009
439 Beiträge
 
#7

AW: externe Exception c0000006

  Alt 19. Sep 2019, 06:18
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.
  Mit Zitat antworten Zitat
sahimba

Registriert seit: 14. Nov 2011
Ort: Berlin, Hauptstadt der DDR
137 Beiträge
 
Delphi 10 Seattle Professional
 
#8

AW: externe Exception c0000006

  Alt 19. Sep 2019, 08:29
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.
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.811 Beiträge
 
Delphi 12 Athens
 
#9

AW: externe Exception c0000006

  Alt 19. Sep 2019, 09:40
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
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:26 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