AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Fehler 0x0eedfade in Kernelbase.dll
Thema durchsuchen
Ansicht
Themen-Optionen

Fehler 0x0eedfade in Kernelbase.dll

Ein Thema von Sumafu · begonnen am 7. Mai 2019 · letzter Beitrag vom 10. Mai 2019
Antwort Antwort
Seite 1 von 2  1 2      
Sumafu

Registriert seit: 30. Aug 2017
9 Beiträge
 
#1

Fehler 0x0eedfade in Kernelbase.dll

  Alt 7. Mai 2019, 10:47
Hallo, hoffentlich bin ich in diesem Unterforum richtig, denn ich bin mir selbst nicht sicher, was überhaupt der Fehler ist.

Meine Situation ist Folgende: Ich muss eine Anwendung warten (Delphi 7), die im Dateisystem regelmäßig in einem Ordner nach Änderungen schaut. Dabei werden haufenweise WinApi Calls genutzt (also die ganze Dateisystemzugriff-Palette). Jetzt haben wir ab und zu mal das Problem, dass bei einem Kunden regelmäßig eine EOutOfResources Fehlermeldung hochkommt (er nutzt Windows 7). Im Windows-Event-Log sieht man dann Folgendes:

Name der fehlerhaften Anwendung: ***.exe, Version: 2.1.8.633, Zeitstempel: 0x2a425e19
Name des fehlerhaften Moduls: KERNELBASE.dll, Version: 6.1.7601.24388, Zeitstempel: 0x5c873078
Ausnahmecode: 0x0eedfade
Fehleroffset: 0x0000c5af
ID des fehlerhaften Prozesses: 0x1fc4
Startzeit der fehlerhaften Anwendung: 0x01d4e8856e7ac6aa
Pfad der fehlerhaften Anwendung: C:\Program Files (x86)\***\***.exe
Pfad des fehlerhaften Moduls: C:\Windows\syswow64\KERNELBASE.dll
Berichtskennung: ac336f50-5478-11e9-81a3-028037ec0200

Der Fehlercode 0x0eedfade bedeutet ja im Grunde, dass die Aufrufende Anwendung eine Fehlermeldung in der DLL erzeugt hat (oder so ähnlich) und die DLL die nicht interpretieren kann. Allerdings kann ich leider nicht eingrenzen, welcher WinApi-Call das jetzt auslöst, da die Api-Calls für Dateisystemzugriffe ja alle an die kernel32.dll gehen. In meiner Anwendung hat auch jede einzelne Funktion und Prozedur einen großen try-catch-Block, der sämtlichen Code kapselt (historisch bedingt), allerdings greifen die auch nicht.

Ich gehe zwar nicht davon aus, dass jetzt irgendjemand eine Idee hat, was genau das Problem ist (da ich auch keinen Code schicken kann/darf). Aber vielleicht hat ja jemand eine Idee, was ich noch probieren könnte, um den Fehler genauer einzugrenzen.

Vielleicht dazu aber kurz den Ablauf der Prüfroutine:
1. Ein Timer feuert jede Sekunde das Prüfevent
2. Es wird geprüft, ob das zu prüfende Verzeichnis exisitert (DirectoryExists)
3. Es wird über alle Dateien und Ordner in dem Verzeichnis auf oberster Ebene iteriert (FindFirst und FindNext)
4. Es werden Dateiattribute geprüft und eventuell verändert
5. Am Ende wird aufgeräumt (FindClose)

Für die Api-Calls wird nicht direkt die Delphi-Implementierung genutzt, sondern eine Unicode-fähige Implementierung von TMS (kennt vielleicht der ein oder andere). Im Hintergrund rufen die allerdings auch nur die entsprechenden Wide-Varianten der WinApi-Calls auf (hier wird der Fehler nicht liegen).

Bei früheren Kunden mit dem Problem konnte der Fehler "behoben" werden, indem das Windows-Benutzerprofil gelöscht und neu angelegt wurde (natürlich hatte der Systemadmin nie was an dem alten Profil geändert ). Allerdings ist das jetzt keine Lösung mehr, da unser Support den Fehler nachhaltig gelöst haben will ^^
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.771 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Fehler 0x0eedfade in Kernelbase.dll

  Alt 7. Mai 2019, 10:57
.. unter Punkt3, werden da auch Dateien geöffnet?

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Sumafu

Registriert seit: 30. Aug 2017
9 Beiträge
 
#3

AW: Fehler 0x0eedfade in Kernelbase.dll

  Alt 7. Mai 2019, 12:11
Ich habe nochmal tiefer in den Code geschaut und tatsächlich wird in einer Prüfroutine unter Umständen eine Datei geöffnet, wenn eine spezielle Metadaten-Datei zusätzlich in dem zu überwachenden Verzeichnis liegt. Ich werde einmal beim Kunden nachfragen, ob so eine Datei vorhanden ist.
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.771 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Fehler 0x0eedfade in Kernelbase.dll

  Alt 7. Mai 2019, 12:18
.. das würde dann nur irgendwann zu Problem führen, wenn sie nicht mehr geschlossen wird.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Sumafu

Registriert seit: 30. Aug 2017
9 Beiträge
 
#5

AW: Fehler 0x0eedfade in Kernelbase.dll

  Alt 7. Mai 2019, 12:46
Dann wird es das vermutlich nicht sein. Die Datei wird mit in ein TIniFile geladen und später in jedem Fall wieder mit FreeAndNil freigegeben.

Kann es vielleicht sein, dass ein Virenscanner irgendwo dazwischen grätscht? Mit den Teilen hatten wir schon öfters Probleme.
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.771 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Fehler 0x0eedfade in Kernelbase.dll

  Alt 7. Mai 2019, 15:36
.. hast Du die Möglichkeit MadExcept einzusetzen?

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
OlafSt

Registriert seit: 2. Mär 2007
Ort: Hamburg
284 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

AW: Fehler 0x0eedfade in Kernelbase.dll

  Alt 8. Mai 2019, 08:49
Wir haben das gleiche Phänomen hier mit einer D2007-Anwendung. Diese arbeitet aber sehr stark mit einem SQL-Server und produziert ab und zu eine Excel- oder PDF-Datei. Nach etwa 7 Minuten ohne Bedienung wird das Programm ohne jede Vorwarnung einfach aus dem Speicher geworfen, als würde man es mit dem Taskmanager abschießen.

MadExcept ist chancenlos, da es sich hier sehr wahrscheinlich um ein Windows-Problem handelt - der Eintrag im Eventlog zeigt das ja schon auf. Wir tippen auf ein Update seitens Windows, das nun plötzlich Stress macht. Wir konnten es nur noch nicht identifizieren.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Fehler 0x0eedfade in Kernelbase.dll

  Alt 8. Mai 2019, 09:11
Hallo,
das ist aber nicht das gleiche Phänomen.
Weil der TE immerhin eine Exception bekommt. Hier würde in der Tat MadExcept was bringen (siehe Klaus01).
Ich würde MadExcept einfach mit einem neuen leeren Projekt, wo z.B. eine "Division durch 0"-Exception provoziert wird.

Die Nutzung von MadExcept ist ja einfach.
- in Projekt-Optionen MadExcept einstellen (ein Haken "enable MadExcept")
in der DPR werden jatzt an ersteer Stelle diverse MadExcept-Unis eingebunden
(haken wieder raus und die Units sind wieder weg)
- beiden Compilereinstellungen alles rein was geht (Laufzeitfehler, Debug-Informationen ...)
Optimierung sollte so stehen bleiben wie im Release
- bei den Linkereinstellungen TD32 und externe Debugsymbole

Wenn die Exe jetzt 3mal so gross ist, war alles richtig.

Ein Test wäre

{$IFDEF MADEXCEPT}
i,j: Integer;
i := StrToInt('0');
j := 10 div i;
{ENDIF}
Das erzeugt die Div/0-Exception.

Ergebnis ist ein MadExcept-Dialog, unter Stack-Trace findet man die genaue Ziele, die die Exception verursacht, incl. Unit-/Prozedurname/Zeilennummer.

Einfach mal ausprobieren!
Heiko
  Mit Zitat antworten Zitat
Sumafu

Registriert seit: 30. Aug 2017
9 Beiträge
 
#9

AW: Fehler 0x0eedfade in Kernelbase.dll

  Alt 10. Mai 2019, 14:43
MadExcept sieht sehr vielversprechend aus, allerdings kostet das bei kommerzieller Nutzung was. Und ein "vielleicht könnte es helfen" wird dem Chef als Begründung vermutlich nicht reichen, zumal wir das nur für diesen einen Fall bräuchten, und sonst nicht.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#10

AW: Fehler 0x0eedfade in Kernelbase.dll

  Alt 10. Mai 2019, 14:55
Zitat:
denn ich bin mir selbst nicht sicher, was überhaupt der Fehler ist.
Traurig.
Zitat:
Am Ende wird aufgeräumt
Möchte ich bezweifeln denn es kommt nicht umsonst die Fehlermeldung EOutOfResources.. falls du die Meldung nicht kennst bzw. weist was es bedeutet hier nähere Informationen
Zitat:
MadExcept ist chancenlos, da es sich hier sehr wahrscheinlich um ein Windows-Problem handelt
Auch das möchte ich sehr bezweifeln denn die Fehlermeldung ist doch eindeutig.
Zitat:
MadExcept sieht sehr vielversprechend aus... Und ein "vielleicht könnte es helfen" wird dem Chef als Begründung vermutlich nicht reichen
Ohne es mal versucht zu haben und der Verwendung unserer altbewährten
wird dir hier wohl niemand weiter helfen können.

Ich würde überall da wo Handles erstellt werden einen Breakpoint setzen und beim beenden bzw. neu Erzeugung vorher prüfen ob das letzte freigegeben wurde.
Ansonsten kann man nur Raten. Von einem leeren Blatt Papier kann man nun mal nicht lesen.

gruss

Geändert von EWeiss (10. Mai 2019 um 15:06 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 20:18 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz