Announcement

Collapse
No announcement yet.

Access violation in module ntdll.dll

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

  • Access violation in module ntdll.dll

    Ich hab da ein Problem. Mein Programm stürzt unmotiviert ab mit o.g. Fehlermeldung. Ich habe zwar in diesem Forum einiges darüber gelesen, bloß eine Lösung für das Problem noch nicht. Meine Frage nun was kann ich dagegen tun, außer den Rechner neu zu starten, was nun auf Dauer keinen Kunden zufrieden stellt. Soweit ich richtig informiert bin passiert der Fehler unter WinNT 4.0. Wie sieht es mit Windows95/98 aus. Wurde dort auch das Speichermanagement geändert? Ich benutze WinNT SP5 Delphi 3.0 Client Server. Besten Dank für Eure Hilfe!

  • #2
    Hallo,

    hinter <b>NTDLL.DLL</b> verbirgt sich der Speichermanager von NT, der für das Aufteilen von 4 kByte-Speicherkacheln in kleinere Häppchen zuständig ist. Ab dem <b>Service Pack 4</b> verwendet NT die strengen Speicher-Prüfungen, die auch in Windows 2000 eingesetzt werden. Immer dann, wenn ein Speicherbereich freigegeben wird, kommt er <b>nicht</b> mehr als das Ende der Liste der freien Blöcke, sondern wird sofort wieder bei der nächsten Anforderung eingebaut. Somit machen sich Fehler im eigenen Programm (Zugriff auf bereits freigegebene Zeiger) sofort bemerkbar, anstelle als Zeitbome im Verborgenen zu schlummern (MS erhöht damit indirekt die Stabilität, da Programmfehler vom Betriebssystem häufiger entdeckt und gemeldet werden).

    Wenn NTDLL.DLL einen Fehler meldet, ist das eigene Programm <b>fehlerhaft</b> und sollte entsprechend überarbeitet werden. Gerade Dritt-Komponenten haben da ihre Probleme und sollten kritisch geprüft werden.

    Erst mit Windows 2000 ist auf der CDROM ein Tool zu finden, mit dem ein Kompatibilitätsmodus aktiviert werden kann, der zum alten Speichermanager wechselt. Somit ist der Fehler im eigenen Programm immer noch vorhanden, nur die Wahrscheinlichkeit des Auftretens wird verringert

    Comment


    • #3
      Genau in der Drittkomponente liegt das Problem

      Comment


      • #4
        Die NTDLL.DLL-Fehlermeldung ist mir heute auch erstmals auf NT4 SP5 begegnet.
        Aus der frisch am 25.3.00 erworbenen CD (natürlich mit dem koscher erworbenen Buch) zu den Delphi Win32 Lösungen habe ich naiverweise die so praktisch zu verwenden sein müssenden Registry-Multieinträge ausprobieren wollen. Dabei habe ich michwohl neben falschem Vorgehen beim Anwenden "des REG_MULTI_SZ-Daten Beispiels vielleicht auch noch nichteinmal um die WIn 9x / NT Unterschiede gekümmert.
        NT-Kann jedenfalls mit irgendeinem Typ(en) nichts anfangen, den ich ihm mit dem Code zu Fraße vorgworfen habe.
        Ich als Quereinsteiger (vor einem Jahrzehnt mit Dos-Paradox begonnrn) auch jetzt noch als querschschlagendes DummDummGeschoss im Win-API-Dschungel schwirrend, würde mich freuen einen Hinweis zu bekommen, wie ich meine Registryeinträge so schön zusammengefasst loswerden könnte

        Comment


        • #5
          Hallo Michael,

          die Registry-Beispiele aus dem Buch habe ich unter NT 4 SP5 getestet - tritt der Fehler <br>
          a) beim Original aus dem Buch auf, oder <br>
          b) in der eigenen (abgewandelten) Version? <br>
          Wenn die Antwort b) lautet, wie sieht ein Beispiel aus

          Comment


          • #6
            Hallo Andreas Kosch,

            vielen Dank für die prompte Reaktion.
            hier mein Vorgehen.
            Das ntdll.dll problem wurde mit Neustart behoben.
            Vorgehensweise zum Fehler beim Beispiel aus dem Buch:
            Ich habe die Dateien des Bsp's von der Cd auf Festplatte kopiert.
            Und dann den Compiler gestartet.
            Umgebung:
            NT 4 SP5
            Delphi 4 bzw 4.01 nicht weiter updated
            1. Messagebox Fehler beim Erzeugen vom Formular: ungültiges Streamformat.

            beim nächsten Anlauf Meldung in der Statuszeile: [Fehler] RLink32:unsupported 16Bit resource in File RegMultiSZFrm.DF

            Comment


            • #7
              Hallo,

              ich habe gerade einmal auf der CDROM nachgeschaut: Die Projektdateien wurden mit Delphi 5 abgespeichert, wobei die neue Voreinstellung für das ASCII-Format der .DFM-Datei nicht abgewählt wurde. Somit liegt die DFM-Datei nicht in dem binären Formar vor, das Delphi 4 erwartet.

              Da das Programm nur aus 2 Button und einer Listbox besteht, ist es am einfachsten, das Beispiel nachzubauen und den Inhalt der PAS-Datei in das neue Projekt zu kopieren

              Comment


              • #8
                Hallo Herr Kosch,

                immernoch = wieder einmal <Danke>. An ~.DFM habe ich nicht gedacht o.K.

                gruss m.m

                Comment

                Working...
                X