AGB  ·  Datenschutz  ·  Impressum  







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

Access Violations nach Update auf XE3

Ein Thema von Nersgatt · begonnen am 8. Okt 2012 · letzter Beitrag vom 15. Okt 2012
Antwort Antwort
Benutzerbild von Nersgatt
Nersgatt

Registriert seit: 12. Sep 2008
Ort: Emlichheim
693 Beiträge
 
Delphi 10.1 Berlin Professional
 
#1

Access Violations nach Update auf XE3

  Alt 8. Okt 2012, 15:10
Hallo!

Wir haben unsere Anwendung von Delphi 2010 auf XE 3 umgestellt. Seit dem haben wir an scheinbar zufälligen Stellen im Programm Access Violations. Ich kann mir da nicht den geringsten Reim drauf machen. Ich habe die Vermutung, dass die Fehler nur in Formularen auftreten, die ein TClientDataSet beinhalten. Aber das ist Spekulation.

Ich hab nun FastMM mit dem FullDebugMode installiert. Allerdings kann ich mit der Ausgabe so gar nichts anfangen. Kann mir vielleicht jemand auf die Sprünge helfen?
Das sieht dann z.B. so aus:
Zitat:
---------------------------
sofhie.exe: Memory Error Detected
---------------------------
FastMM has detected an error during a FreeMem operation. The block footer has been corrupted.



The block size is: 39



This block was allocated by thread 0x960, and the stack trace (return addresses) at the time was:

4069D1

40DDF9

40DF2A

6E54FD [Data.DB][Data][Data.DB.TStringField.GetValue]

6E53D7 [Data.DB][Data][Data.DB.TStringField.GetAsVariant]

AB6BAD [cxDB.pas][cxDB][cxDB.GetFieldValue][395]

AC1118 [cxDBData.pas][cxDBData][cxDBData.TcxValueDefDBReader.GetValue][3398]

90F02E [cxDataStorage.pas][cxDataStorage][cxDataStorage.TcxDataStorage.ReadRecord][2340]

97FBCE [cxCustomData.pas][cxCustomData][cxCustomData.LoadData][8627]

97FD52 [cxCustomData.pas][cxCustomData][cxCustomData.TcxCustomDataController.LoadStorage][8666]

AC4895 [cxDBData.pas][cxDBData][cxDBData.TcxDBDataController.LoadStorage][5164]



The block is currently used for an object of class: Unknown



The allocation number is: 2091660



The block was previously freed by thread 0x960, and the stack trace (return addresses) at the time was:

40697E

40B6B5

6E0D2C [Data.DB][Data][Data.DB.TNamedItem.HashName]

41A4B0 [FastMM4.pas][FastMM4][FastMM4.DebugFreeMem][8893]

41A4C5 [FastMM4.pas][FastMM4][FastMM4.DebugFreeMem][8900]

40697E

40B6B5

6E0D2C [Data.DB][Data][Data.DB.TNamedItem.HashName]

7738A1AD [Unknown function at EtwSetMark]

77356500 [Unknown function at _wcsnicmp]

41A4B0 [FastMM4.pas][FastMM4][FastMM4.DebugFreeMem][8893]



The current thread ID is 0x960, and the stack trace (return addresses) leading to this error is:

40697E

40E07E

6E55E9 [Data.DB][Data][Data.DB.TStringField.GetValue]

6E53D7 [Data.DB][Data][Data.DB.TStringField.GetAsVariant]

AB6BAD [cxDB.pas][cxDB][cxDB.GetFieldValue][395]

AC1118 [cxDBData.pas][cxDBData][cxDBData.TcxValueDefDBReader.GetValue][3398]

90F02E [cxDataStorage.pas][cxDataStorage][cxDataStorage.TcxDataStorage.ReadRecord][2340]

97FBCE [cxCustomData.pas][cxCustomData][cxCustomData.LoadData][8627]

97FD52 [cxCustomData.pas][cxCustomData][cxCustomData.TcxCustomDataController.LoadStorage][8666]

AC4895 [cxDBData.pas][cxDBData][cxDBData.TcxDBDataController.LoadStorage][5164]

98027E [cxCustomData.pas][cxCustomData][cxCustomData.TcxCustomDataController.UpdateStorage][8870]



Current memory dump of 256 bytes starting at pointer address 7D6A63B0:

00 00 00 00 1F 00 00 00 68 00 00 00 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80

80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80

80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80

80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80

80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80

80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80

80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80

80 80 80 80 80 80 80 80 80 80 80 80 87 CD F1 77 80 80 80 80 80 80 80 80 00 00 00 00 F1 63 6A 7D

. . . . . . . . h . . . € € € € € € € € € € € € € € € € € € € €

€ € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € €

€ € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € €

€ € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € €

€ € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € €

€ € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € €

€ € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € €

€ € € € € € € € € € € € ‡ Í ñ w € € € € € € € € . . . . ñ c j }


---------------------------
OK
---------------------------
Danke!
Jens
Jens
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.485 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

AW: Access Violations nach Update auf XE3

  Alt 8. Okt 2012, 16:56
TDataSet.GetData ist seit XE3 fehlerhaft. (http://qc.embarcadero.com/wc/qcmain.aspx?d=109219)


Dazu kann ich eigentlich nur Uwe Schuster zitiere:
Zitat:
where dev didn't understood code. Guess QC109219
  Mit Zitat antworten Zitat
Benutzerbild von Nersgatt
Nersgatt

Registriert seit: 12. Sep 2008
Ort: Emlichheim
693 Beiträge
 
Delphi 10.1 Berlin Professional
 
#3

AW: Access Violations nach Update auf XE3

  Alt 9. Okt 2012, 07:33
Vielen Dank für den Hinweis. Leider scheint es das nicht zu sein. Ich hab die Datei bei mir gepatcht und die gepatchte Datei direkt meinem Projekt hinzugefügt.
Er kommt nie in den Zweig, wo FValidating True ist. Hätte mich auch gewundet, weil wir an der Stelle keinen Ereignishandler für Validating haben.

Hat jemand noch eine Idee? Ich schaffe es ja nicht mal, per Debugger direkt an die Stelle zu springen, wo der Fehler auftritt.
Das Letzte, wo ich fehlerfrei durchsteppen kann ist Data.DB.TStringField.GetValue. Das geht ganz oft gut, bis es dann irgendwann nach dem END von dieser Fuction knallt.
Jens
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#4

AW: Access Violations nach Update auf XE3

  Alt 9. Okt 2012, 07:53
Imho kracht ein Zugriff auf ein nicht gepostetes NULL Feld.
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von Nersgatt
Nersgatt

Registriert seit: 12. Sep 2008
Ort: Emlichheim
693 Beiträge
 
Delphi 10.1 Berlin Professional
 
#5

AW: Access Violations nach Update auf XE3

  Alt 9. Okt 2012, 10:50
Ne, das mit dem Nullfeld ist es wohl auch nicht.

Ich hab es jetzt mal auf ein minimales Beispielprojekt runtergebrochen.
Ihr findest das Projekt im Anhang.
Sobald ich das Grid aus dem Formular entferne, funktioniert es übrigens.

Hülfä!
Angehängte Dateien
Dateityp: zip TestProjekt.zip (2,57 MB, 8x aufgerufen)
Jens
  Mit Zitat antworten Zitat
Benutzerbild von Nersgatt
Nersgatt

Registriert seit: 12. Sep 2008
Ort: Emlichheim
693 Beiträge
 
Delphi 10.1 Berlin Professional
 
#6

AW: Access Violations nach Update auf XE3

  Alt 10. Okt 2012, 12:41
So, das Problem ist umzingelt.
Das Problem tritt beim TStringField innerhalb des TClientDataSet auf. Aber nur in dem Fall, wenn TStringField.Size kleiner ist, als das Feld in der Datenbank.
Beispiel: ich habe in der Datenbank ein Feld VarChar(30) und das TStringField, worein die Daten solle hat nur die Size von 20. Dann kracht es.

Nun ist die Frage: ist das ein Fehler in der DB.Data.pas, oder sind wir selbst schuld? Delphi 2010 hatte das noch problemlos geschluckt, wenn das Feld zu klein ist.
Jens
  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 10:28 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