AGB  ·  Datenschutz  ·  Impressum  







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

Seltsamer unreproduzierbarer Bug

Ein Thema von mael · begonnen am 10. Jun 2020 · letzter Beitrag vom 12. Jun 2020
 
Benutzerbild von mael
mael

Registriert seit: 13. Jan 2005
391 Beiträge
 
Delphi XE3 Professional
 
#5

AW: Seltsamer unreproduzierbarer Bug

  Alt 12. Jun 2020, 07:30
Ich habe auch noch das Internet bemüht und bin auf dies hier gestoßen. Vielleicht hilft das ja weiter.
"Fail Fast Exception" erklärt warum kein Exception Handler dies auffangen konnte, und deswegen madexcept oder Logging nicht funktioniert. Siehe auch: RaiseFailFastException WinAPI
Danke, wird nützlich sein in Zukunft.

Es war ein Pointer-Truncation-Bug. Das wesentliche Problem war dass auf dem Nutzer-System VirtualAlloc Adressen aus dem oberen Bereich des Adressraums liefert, auch wenn der Prozess gerade erst gestartet wurde.

Seltsamerweise obwohl auf meinem Testsystem (VM mit Win10 x64) als auch dem "Bug"system (Win10 x64) die gleichen ASLR-Optionen ausgewählt sind. Deaktiviert man allerdings ASLR auf dem "Bug"system liefert VirtualAlloc wieder Adressen unter 4GiB.

In eigenem Code, der Window Procedures hooked, wird ein Pointer der von System.Classes.MakeObjectInstance zurückgeliefert wird zu DWORD anstatt LONG_PTR gecastet (war damals vor Win64 so in den Delphi-Quellen, und habe ich beim anpassen an x64 übersehen).

Ich kann das Problem reproduzieren wenn ich die unteren 4GiB reserviere, direkt beim Prozessstart, und somit VirtualAlloc zwinge Adressen > 4GiB zu liefern.

Unter Win8.1 kriege ich eine Exception die direkt auf den Fehler zeigt (wenn ich die unteren 4GiB reserviere), unter Win10 nicht. Hier musste ich mit minidumps (die von WER erzeugt werden) und Visual Studio einen Stacktrace finden und mit Delphi's CPU-View dann die Adressen aus diesem Trace in Zeileninformation übersetzen.

Details wie ich den Fehler gefunden habe hier:
http://forum.madshi.net/viewtopic.ph...t=28825#p53528

Bleibt die Frage welche Optionen unter Windows dieses Verhalten -- VirtualAlloc gibt hohe Adressen zurück -- bewirken.
HxD, schneller Hexeditor:
http://mh-nexus.de/hxd

Geändert von mael (12. Jun 2020 um 07:55 Uhr)
  Mit Zitat antworten Zitat
 


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 05:12 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 by Thomas Breitkreuz