Einzelnen Beitrag anzeigen

genesisv

Registriert seit: 22. Sep 2008
6 Beiträge
 
Delphi 2007 Professional
 
#1

Nicht nachzuvollziehende EAccessViolation

  Alt 5. Dez 2011, 17:13
Hallo,

in letzter Zeit häufen sich AccessViolations in unseren Projekten, wo ich leider an meine Grenzen stoße. Die sind für mich nicht nachzuvollziehen, ev. hat hier jemand eine Idee. Folgend der Protokolleintrag (JCL Error Dialog):

Code:
Zugriffsverletzung bei Adresse 00404ED4 in Modul 'lps.exe'. Lesen von Adresse FFFFFFFD.
------------------------------------------------------------------------------
Fehlerklasse: EAccessViolation
Fehlermeldung: Zugriffsverletzung bei Adresse 00404ED4 in Modul 'lps.exe'. Lesen von Adresse FFFFFFFD.
Fehleradresse: 00404ED4
------------------------------------------------------------------------------
Hauptthread ID = 1084
Fehlerthread ID = 1084
------------------------------------------------------------------------------
Fehlerstack
Stackliste, erzeugt 05.12.2011 14:04:27
[00404ED4]{lps.exe    } System.TObject.Free
[0085B3AD]{lps.exe    } HTTPV2.TFormHTTPV2.Post (Line 354, "..\MainSystem\HTTPV2.pas" + 7)
[0088EDFE]{lps.exe    } Main.TForm_Main.UploadPrograms (Line 2636, "Main.pas" + 21)
[00893E1C]{lps.exe    } Main.TForm_Main.ShowProgramEditorDelayed (Line 3856, "Main.pas" + 43)
[0046721B]{lps.exe    } ExtCtrls.TTimer.Timer (Line 2281, "C:\builds\Tp\vcl\i18n\de\ExtCtrls.pas" + 1)
[0043844C]{lps.exe    } Classes.StdWndProc
------------------------------------------------------------------------------
Callstack des Hauptthread
Stackliste, erzeugt 05.12.2011 14:04:27
[77DA64F4]{ntdll.dll  } KiFastSystemCallRet
Meiner Meinung nach dürfte der Fehler so aber gar nicht auftreten können. In der Zeile 354 von HTTPV2.TFormHTTPV2.Post wird eine Funktion der selben Form aufgerufen:

Delphi-Quellcode:
function TFormHTTPV2.Post(Url, Filename, ErrorHint: string): integer;
begin
348: ClearItems;
349: // Anmerkung: Items[x] ist ein array-property, das das interne array - bei bedarf - automatisch erhöht
350: Items[0].RequestType := httpPost;
351: Items[0].URL := Url;
352: Items[0].LocalFile := Filename;
353:
354: Result := Send(ErrorHint);
end;

function TFormHTTPV2.Send(ErrorHint: string): integer;
begin
...
end;
Also meiner Meinung nach müsste er doch zumindest in .Send reinlaufen und dort einen Fehler protokollieren. Laut stack list wäre ja entweder die Form selbst, die Funktion "Send" oder der string Errorhint nicht vorhanden, alles eher unwahrscheinlich

Deutet das auf interne Speicherlecks/bugs hin, die sich erst später auswirken? Im Normalfall funktioniert der Aufruf anstandslos, aber sporadisch werden uns AccessViolations ähnlich dieser gemeldet, mit denen man einfach nichts mehr anfangen kann.
  Mit Zitat antworten Zitat