Announcement

Collapse
No announcement yet.

NTDLL-Fehler in Delphi-1-Programm

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • NTDLL-Fehler in Delphi-1-Programm

    Hallo,

    ein Delphi-1-Programm (Datenerfassung-Programm, bisher auf Windows 3.1 eingesetzt) meldet jetzt nach der Übertragung auf einen NT-Rechner mit SP5 eine allgemeine Schutzverletzung in der NTDLL.DLL.
    Wenn ich dann eine neue EXE einspiele, dann läuft dies 1-2 Tage problemlos. Danach taucht dieses Problem wieder auf. Ich stehe vor einem Rätsel.

    Dank im voraus für die Hilfe.

  • #2
    Hallo,

    hinter <b>NTDLL.DLL</b> verbirgt sich der <b>NT Runtime Allocator</b>, der die vom Virtual Memoray Allocator angeforderten grossen Speicherblöcke in kleinen Häppchen an den Endverbraucher (Programm) weitergibt. Aus diesem Speicherpool werden alle Speicheranforderung des Prozess-Heaps, der privaten Heaps und der Anforderungen des Delphi-Speichermanagers bedient.

    Ab dem <b>Service Pack 4</b> hat Microsoft die Performance des NT Runtime Allocators deutlich verbessert. Wieder freigegebene Speicherbereiche werden in verschiedenen Listen mit unterschiedlichen Blockgrössen zwischengepuffert, damit der nächste Aufruf schneller abgearbeitet werden kann. Und ab dem SP4 kommt ein freigegebener Bereich nicht mehr an das Ende der Liste, sondern an den Anfang! Damit erhält eine Anwendung von NTDLL.DLL immer dann die rote Karte, wenn auf einen bereits freigegebenen Speicherbereich über einen Zeiger nochmals zugegriffen wird. Bis zum SP3 war das Risiko relativ klein, da dieser Block am Ende der Liste der freien Blöcke stand. Ab dem SP4 knallt es in derartigen Fällen sofort.

    Falls die Fehlermeldung auftritt, hilft ein Neubooten des Rechners (in diesem Fall ist der Speicherpool noch relativ leer)

    Comment

    Working...
    X