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
Antwort Antwort
Benutzerbild von mael
mael

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

Seltsamer unreproduzierbarer Bug

  Alt 10. Jun 2020, 20:32
Hallo,

Ein Nutzer hat einen seltsamen Bug den ich bisher nur auf seinem System reproduzieren kann. Ungünstigerweise funktioniert Remote-Debugging nicht, die Dateien werden übertragen, aber dann bricht die Session ab, vielleicht ein Latzenz-Problem. (Gibt es da einen Schalter/Option?)

Madexcept erkennt keine Exception, und Logging jeder Funktion (meines eigenen Codes) bringt auch keine schlüssigen Ergebnisse. Alle Funktionen werden alle fehlerfrei ausgeführt (enter und exit), aber danach ist plötzlich Schluss. Muss also wohl in einer Systemfunktion passieren, vielleicht verzögert ausgelöst.

Plötzlich beendet sich HxD einfach, ohne weitere Meldungen, auch nicht von Windows.

Im der Windows-Ereignissanzeige gibt es einen Eintrag, Exception 0x409, raised in ntdll.dll, aber sonst nichts.

Sein Windows-System ist x64 Windows 10.

Hat jemand eine Idee wie man den Bug finden kann?
HxD, schneller Hexeditor:
http://mh-nexus.de/hxd
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.337 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Seltsamer unreproduzierbarer Bug

  Alt 11. Jun 2020, 06:36
Leider schreibst du nichts, in welcher Situation das beim Anwender passiert.
Als ich gesehen habe, dass es um HxD geht, kam mir sofort die Idee, dass es am AV-Programm liegen kann. Hast du das schon geprüft? Und bitte nicht den MS-Defender vergessen.
Wenn es daran nicht liegt, könnte ich mir auch vorstellen, dass die Datei, die der Anwender ansehen will, defekt ist, bzw. die Platte an der Stelle einen Fehler hat.

Ich habe auch noch das Internet bemüht und bin auf dies hier gestoßen. Vielleicht hilft das ja weiter.
Peter
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.060 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Seltsamer unreproduzierbarer Bug

  Alt 11. Jun 2020, 09:11
Kann der Kunde das zuverlässig reproduzieren und dir das Log vom Sysinternals Process Monitor, gefiltert auf HxD.exe, schicken?
  Mit Zitat antworten Zitat
Benutzerbild von mael
mael

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

AW: Seltsamer unreproduzierbarer Bug

  Alt 11. Jun 2020, 23:26
Es passiert direkt beim Start von HxD, ohne irgendeine Datei zu öffnen, auch mit der portablen Version, also ohne dass am System was verändert wurde.

Ich vermute auch ein Antivirenprogram, oder irgendein Gameschutz, aber konnte nichts finden.

Ich hatte Zugriff auf das System des Nutzers, da er mir erlaubt hat es per TeamViewer zu testen. Bin aber etwas ratlos, außer schrittweise alles auszukommentieren.

Process Monitor versuche ich mal. Gibt es sowas ähnliches auch für Windows Botschaften WM_*?

P.S.: Das Nutzersystem ist auch nicht up-to-date, aber ich würde gerne den Bug finden (oder rausfinden ob es ein Problem mit dem System ist), bevor ich ein Update vorschlage und dieser Bug nicht mehr reproduzierbar ist (aber vielleicht sonst "still" trotzdem Probleme verursacht).
HxD, schneller Hexeditor:
http://mh-nexus.de/hxd

Geändert von mael (12. Jun 2020 um 06:33 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von mael
mael

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

AW: Seltsamer unreproduzierbarer Bug

  Alt 12. Jun 2020, 06: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 06:55 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


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 01:58 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