AGB  ·  Datenschutz  ·  Impressum  







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

AV verursacht durch Code Optimierung

Ein Thema von Boombuler · begonnen am 9. Dez 2008 · letzter Beitrag vom 11. Dez 2008
 
Benutzerbild von Boombuler
Boombuler

Registriert seit: 14. Mär 2003
Ort: Osnabrück
244 Beiträge
 
Delphi 2009 Professional
 
#1

AV verursacht durch Code Optimierung

  Alt 9. Dez 2008, 11:07
Hi,

heute ist uns hier was aufgefallen was die Delphi Code Optimierung verursacht. Durch fehlerhaftes Optimieren der lokalen Variablen wird eine Zugriffsverletzung verursacht. Ich habe den Original-Code mal auf ein sinnloses Beispiel übertragen. Vielleicht kann mir ja jemand von euch sagen wie ich das am besten umgehen kann. Da der Code der original Anwendung über 1,5 Mio. Zeilen Code hat würde ich die Code Optimierung gerne eingeschaltet lassen und auch nicht umbedingt alle Aborts suchen ob der Fehler dort auftreten kann.


Beispiel (getestet mit D2005 und D2009)
Delphi-Quellcode:
procedure ShowSum(a,b,c,d,e,g,f: Integer);
var sum: Integer;
begin
  sum := a+b+c+d+e+f+g;
end;


procedure TForm1.Button1Click(Sender: TObject);
var
  x: Integer;
  a, b,c: Integer;
begin
  b := 2;
  if (GetTickCount mod 2) = 0 then
  begin
    a := GetTickCount;
    b := a div 2;
    x := 4915; // Exception @ 1337
    c := Handle;
  end
  else
  begin
    a := Handle;
    b := a div 2;
    x := 53259; // Exception @ D00F
    c := GetTickCount;
  end;
  ShowSum(a,b,c,5,4,x,9);
  Abort;
end;
Der Fehler wird dadurch ausgelöst, dass die Variable X per Optimierung auf EBP gelegt wird, welches von Abort zur Berechnung der Aufruf-Adresse verwendet wird.

PS: GetTickCount und Handle wurden hier nur verwendet, damit Delphi einige stellen nicht komplett optimiert!

MfG
Boombuler
"Look at you, Hacker. A pathetic creature of meat and bone, panting and sweating as you run through my corridors. How can you challenge a perfect, immortal machine?"
SwapIt Highscore:
  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 12:00 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-2025 by Thomas Breitkreuz