Announcement

Collapse
No announcement yet.

Attempted to read or write protected memory.

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

  • Attempted to read or write protected memory.

    Hallo Experten,

    ich habe ein C#-Project bei dem sporadisch immer wieder folgende Exception die Software zum Absturz bringt.
    "Attempted to read or write protected memory. This is often an indication that other memory is corrupt"

    Dieser Fehler tritt auf mehreren PCs gleicher Konfiguration auf, wodurch sich ein Hardwaredefekt ausschließen lässt.

    Ich habe bereits viel zu diesem Fehler gegoogelt. In den Beiträgen, die ich bisher gelesen habe wurden verschiedenste Lösungsansätze genannt, um das Problem zu beheben.

    Ein Ansatz besteht darin, irgendetwas im Code zu ändern (beispielsweise das Framework, oder den grad der Optimierung). Ein anderer Beitrag besagt, dass diese Methode das Problem nur temporär umgeht, aber nicht dauerhaft löst. Es heißt, dass diese Änderungen lediglich den beschädigten Speicher von einem kritischen Bereich in einen unkritischen verschieben. Setzt man die Entwicklung fort, kann es jedoch passieren, dass der beschädigte Speicher wieder auf einen kritischen Bereich fällt wodurch der Fehler erneut auftritt.

    Viele Beiträge schlagen vor, mittels WinDBG und SOS dem Problem auf den Grund zu gehen. Leider komme ich hiermit nicht so richtig weiter. Ich erstelle nach dem crash ein Dump-File, lade es in Windbg, lade die Symbole und SOS und starte meine Analyse mit !analyze -v. Leider erhalte ich nur sehr kryptische Infos.
    Ich weiß nicht genau wonach ich suchen muss.

    In einem Thread wurde empfohlen mittels Pageheap den Heap überprüfen zu lassen und im Falle eines Heap-Fehlers sofort die Software zum Absturz zu bringen, sodass Heap uns Stack noch nahe am Fehler sind.

    Kennt einer von euch eine Vorgehensweise um einen solchen Fehler systematisch zu untersuchen und den Ursprung zu finden?
    Welche Kommandos in Windbg sind hierfür nötig?


    Gern poste ich auch nötige Informationen aus Windbg etc. Leider ist der Code so umfangreich, dass es wenig Sinn macht, hier Auszüge einzustellen ohne die relevanten Stellen zu kennen.

    Vielen Dank

    Hier noch einige Daten:
    OS: Win7 Pro
    Framework 4.0
    System: 64Bit
    Application: 32Bit

  • #2
    Hallo,

    Windbg ist nicht sehr benutzerfreundlich, daher kann ich dir auch keine direkte Hilfe gebe -- ich bin da auch nur bei Try & Error-Vorgehen ;-)
    In Visual Studio kannst du den Mini-Dump auch analysieren (zu einem gewissen Grad).

    Der Fehler "Attempted to read or write protected memory" stammt i.d.R. von der "Schnittstelle" zwischen managed (.net) und native. Native kann dabei P/Invoke, GDI+ (System.Drawing), andere win32-DLLs sein. Hier reichte s schon wenn eine "struct" im falschen Layout übergeben wird.
    Hat der Code solche Stellen? Es muss dabei nicht direkt dein Code sein, es kann auch sein dass ein Referenze, die dein Code benutzt, eine solche Abhängigkeit hat.
    Dahingehend würde ich das Problem suchen.

    mfG Gü
    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

    Comment


    • #3
      Jup muss ich Guenther recht geben. Mit dem Standard .Net Framework wird Dir das vermutlich nicht passieren, wenn Du nicht irgendwelche total abgefahrenen Sachen anstellst. Dann wuesstest Du aber vermutlich auch wie man solche Probleme loest. Hast Du irgendwelche Frameworks drin oder C libraries die solche Dinge veranstalten koennten?

      Comment

      Working...
      X