hi
Angespornt von
diesem Heise Artikel habe ich mir den
Microsoft Standard User Analyzer (SUA) heruntergeladen. Und dieses Programm auch gleich dazu, weil es benötigt wird.
Microsoft Application Verifier (AV)
Das SUA loggt alles was das eigene Programm so macht, damit man herausfindet, wo es haken könnte.
Das zweite Programm
AV erzeugt Fehler (bzw Exceptions), zu wenig Arbeitsspeicher und was weiß ich noch alles.
Als ich SUA getestet habe mit einigen meiner Delphi (D7) und C++ Programmen da viel es mir wie Schuppen von den Augen. Kein Programm wurde überhaupt ohne
Exception gestartet.
Deshalb habe ich erstmal alles mit
AV getestet, weil man hier einiges mehr einstellen kann. Jedoch sind einige Einstellungen wohl eine ziemliche Härte.
In den Debugausgaben (Strg+Alt+V) gings daher heiter umher
Code:
The thread '
Win32 Thread' (0x11c) has exited with code 0 (0x0).
First-chance
exception at 0x77f866bc in RunAsGUI.exe: 0xC0000005:
Access violation.
Unhandled
exception at 0x77f866bc in RunAsGUI.exe: 0xC0000005:
Access violation.
First-chance
exception at 0x77f65da0 in RunAsGUI.exe: 0xC0000005:
Access violation reading location 0x00000130.
=======================================
VERIFIER STOP 00000002 : pid 0x58C:
Access violation
exception.
00000130 : Invalid address causing the
exception
77F65DA0 : Code address executing the invalid
access
0012FC38 :
Exception record
0012FFB4 : Context record
=======================================
This verifier stop is not continuable. Process will be terminated
when you use the `go' debugger command.
=======================================
Unhandled
exception at 0x77f65a58 in RunAsGUI.exe: User breakpoint.
AVRF: Noncontinuable verifier stop 00000002 encountered. Terminating process ...
The program '[1420] RunAsGUI.exe: Native' has exited with code -1073741823 (0xc0000001).
Man kann das eigene Programm auch unter Delphi starten. Diese
AV Einstellungen gelten auch dort. Nur stört Delphi sofort mit einer
Exception in einem mir unbekannten Speicherteil.
Da mir dieses Zeugs auf den Geist ging, habe ich mal ein bisschen experimentiert und eine schlichte
VCL Anwendung erstellt. Ich habe keinerlei Code dazu geschrieben und auch gleich getestet.
Der Start verlief erfolgreich. Allerdings war das Ende vorzeitig.
Code:
Modul entladen: UxTheme.dll.
Prozess VerifyTest.exe (1904)
ODS: ======================================= VERIFIER STOP 00000013 : pid 0x770: First chance
access violation for current stack trace.
021B6FE2 : Invalid address causing the
exception.
00385A63 : Code address executing the invalid
access.
0012FAB8 : Ex Prozess VerifyTest.exe (1904)
ODS: ======================================= VERIFIER STOP 00000013 : pid 0x770: First chance
access violation for current stack trace.
021B6FE2 : Invalid address causing the
exception.
00385A63 : Code address executing the invalid
access.
0012F584 : Ex Prozess VerifyTest.exe (1904)
In der Hilfe dazu gibt es folgende Information:
Zitat:
Application Verifier break message
First chance
access violation for current stack trace.
Probable cause
This is the most common application verifier stop. Typically it is caused by a buffer overrun error. The heap verifier places a non-accessible page at the end of a heap allocation and a buffer overrun will cause an
exception by touching this page. There are several other causes for this stop. For example, accessing a heap block after being freed. The same debugger command will be useful for this case too.
--
Witzig : Es scheint ein Built-In BufferOverrun zu sein
--
Die Einstellung in
AV, die diesen Fehler provoziert lautet Basics->Locks.
Den Test habe ich dann abgebrochen und mal so angeschaut, welche Anwendungen von MS
den so sicher sind :
Notepad.exe startet nicht bei vielen Einstellungen in
AV. Bei Low Memory stürzt es einfach ab.
Calc.exe macht dasselbe wie Notepad.exe
Bei Low Memory gibt es "Unknown Error".
Regedit.exe war da schon etwas standfester. Jedoch waren die Einstellungen Locks und Memory trotzdem Gift.
LowMemory hat Regedit bei mir einfach ignoriert und glatt 200mb Speicher verschluckt beim Versuch den Schlüssel HKEY_CLASS_ROOT anzuzeigen. Allein die Einstellung LowMemory hat dazu geführt, dass es dann doch ging, jedoch konnten einige Schlüssel nicht geöffnet werden.
So jetzt zu euch.
Versucht mal eure Anwendungen (vorzugsweise Delphi) oder was auch immer, mit den beiden Programmen - zuerst wohl
AV, da SUA das Prog
AV verwendet - zu testen.
Kommentiert hier eure Erfahrungen.
THX