AGB  ·  Datenschutz  ·  Impressum  







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

XE Memory Leak

Ein Thema von haentschman · begonnen am 4. Mai 2012 · letzter Beitrag vom 4. Mai 2012
Antwort Antwort
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#1

XE Memory Leak

  Alt 4. Mai 2012, 09:21
Hallo alle...

eben bin ich fast durchgedreht. Ich suche seit gestern in meinem Quelltext ein Memory Leak von
1-12 Bytes (Unbekannt). Alles auskommentiert bis auf die nackige GUI... ohne Erfolg. Ressource neu erzeugt...usw.

Dann habe ich die dproj neu erzeugt... und siehe da das Leak ist weg Dachte ich... Dann habe ich die Einstellungen des Projektes wieder angepaßt. Da waren die 12 Bytes wieder da

Ich habe herausgefunden:
- sobald im Ausgabepfad .\$(Config)\$(Platform) steht gibt´s das Leak. Steht da ein anderer Pfad oder nix ist es gut.

Kann das jemand nachvollziehen ?

Danke.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.582 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: XE Memory Leak

  Alt 4. Mai 2012, 10:04
Wie sieht denn das entsprechende Log von FastMM aus? Also das ausführliche FullDebug-Log.

Bei mir treten auch mit diesem Ausgabeverzeichnis keine Leaks auf, ich kann das nicht reproduzieren.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#3

AW: XE Memory Leak

  Alt 4. Mai 2012, 14:49
Soooo...

hat etwas gedauert...
Zitat:
--------------------------------2012/5/4 14:39:45--------------------------------
A memory block has been leaked. The size is: 12

This block was allocated by thread 0x148C, and the stack trace (return addresses) at the time was:
40461E
40A90D
40A8A8
40AC14
40AD21
776DB10D [Unknown function at RtlUlonglongByteSwap]
776A578E [RtlLoadString]
77683CC3 [Unknown function at RtlImageNtHeader]
776DA71A [Unknown function at RtlUlonglongByteSwap]
77683C4A [Unknown function at RtlImageNtHeader]
77682C8F [RtlInitializeCriticalSection]

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

The allocation number is: 33

Current memory dump of 256 bytes starting at pointer address 7EF7D950:
64 00 65 00 2D 00 44 00 45 00 00 00 92 30 91 80 00 00 00 00 01 DA F7 7E 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 3A 04 00 00 1E 46 40 00 BD AD 40 00 59 62 69 00 30 71 40 00 9C 71 40 00
A3 BB 40 00 BC 80 69 00 9A 33 14 76 F2 9E 68 77 C5 9E 68 77 00 00 00 00 8C 14 00 00 8C 14 00 00
FF AD 40 00 9B 51 48 00 C4 70 40 00 9A 68 46 00 9E 74 40 00 28 81 69 00 9A 33 14 76 F2 9E 68 77
C5 9E 68 77 00 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 81 2D 92 4C 60 02 6B 00 80 80 80 80
7E D2 6D B3 80 80 80 80 00 00 00 00 39 EB F7 7E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
71 04 00 00 1E 46 40 00 63 5B 40 00 F6 60 40 00 98 5B 40 00 4B 63 69 00 18 79 4A 00 7A 63 69 00
30 71 40 00 9C 71 40 00 A3 BB 40 00 BC 80 69 00 8C 14 00 00 8C 14 00 00 3A 46 40 00 81 5B 40 00
d . e . - . D . E . . . ’ 0 ‘ € . . . . . Ú ÷ ~ . . . . . . . .
. . . . . . . . : . . . . F @ . ½ * @ . Y b i . 0 q @ . œ q @ .
£ » @ . ¼ € i . š 3 . v ò ž h w Å ž h w . . . . Œ . . . Œ . . .
ÿ * @ . › Q H . Ä p @ . š h F . ž t @ . ( i . š 3 . v ò ž h w
Å ž h w . . . . . . . . . . . . . . . . - ’ L ` . k . € € € €
~ Ò m ³ € € € € . . . . 9 ë ÷ ~ . . . . . . . . . . . . . . . .
q . . . . F @ . c [ @ . ö ` @ . ˜ [ @ . K c i . . y J . z c i .
0 q @ . œ q @ . £ » @ . ¼ € i . Œ . . . Œ . . . : F @ . [ @ .

--------------------------------2012/5/4 14:39:45--------------------------------
This application has leaked memory. The small block leaks are (excluding expected leaks registered by pointer):

5 - 12 bytes: Unknown x 1

Note: Memory leak detail is logged to a text file in the same folder as this application. To disable this memory leak check, undefine "EnableMemoryLeakReporting".
...was auch immer das bedeutet

PS: ich bin nicht auf diesen Ordner angewiesen, da ich eh immer einen seperaten Ordner für das Compilat habe. Aber interressant ist das schon.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#4

AW: XE Memory Leak

  Alt 4. Mai 2012, 14:55
Zitat:
'de-DE'#0
Da gibt es wohl irgendwo ein Problem mit der Lokalisierung.

Starte mal dein Programm und kurz vorm Beenden guckst du über den Debugger, in der CPU-Ansicht, ob du bei oder ein Stückchen vor den Adressen 40461E
$0040A90D, $0040A8A8, $0040AC14 und $0040AD21 erkennen kannst was das für Funktionen sind.
Eventuell auch je einen Haltepunkt darauf, dann beenden und erneut starten ... eventuell bleibt der Debugger dort hängen und zeigt dir einen ordentlichen Stacktrace.


Notfalls alle möglichen Debuginfos an, Codeoptimierung aus, Stackframes an und mit Debug-DCUs kompilieren. (eventuell reicht auch schon Letzteres aus)
Aber hier natürlich aufpassen, da sich da dabei die Codeadressen verändern könnten.


PS: Selbst wenn du das Leak selber nicht wegbekommst, falls du zuverlässig rausbekommst wo dieses Leck liegt, kannst du es auch ignorieren lassen. (macht Indy auch nicht anders, mit seinen Löschern)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 4. Mai 2012 um 15:04 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#5

AW: XE Memory Leak

  Alt 4. Mai 2012, 15:01
Zitat:
Da ibt es wohl irgendwo ein Problem mit der Lokalisierung.
Wie ich schon anfangs erklärte. Ich habe zwar die Lokalisierung "Lingus" drin (verantwortlich für das "de")...aaaber, ich habe alles aus dem Quelltext geschmissen (incl. Lokalisierung) bis auf die nackigen GUI Controls. --> Leak
In einem anderen Ausgabeordner als .\$(Config)\$(Platform) habe ich mit dem kompletten Quelltext (incl. Lokalisierung) kein Leak.

Nachtrag: Es scheint so, wenn die Lokalisierung verantwortlich wäre, daß das Leak erscheint wenn die exe mit den dcu´s den Ordner teilt. Was aber unlogisch wäre.

Geändert von haentschman ( 4. Mai 2012 um 15:04 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#6

AW: XE Memory Leak

  Alt 4. Mai 2012, 15:06
Die Delphi-RTL/VCL lokalsiert auch.
z.B. bei den Resourcen (du kennst bestimmt die .de-Dateien zu DLLs/BPLs und auch die Resourcen selbst sind sprachgebunden, seitens Windows)

[edit]
hatte oben noch was editiert
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#7

AW: XE Memory Leak

  Alt 4. Mai 2012, 15:09
Zitat:
Die Delphi-RTL/VCL lokalsiert auch.
...aber nur wenn man im Projekt die Sprachen einrichtet. Hatte ich probiert und wieder entfernt. Meinst du da ist was hängengeblieben ?

Zitat:
hatte oben noch was editiert
... das ist mir zu viel Action, weil ich es nicht verstehe
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#8

AW: XE Memory Leak

  Alt 4. Mai 2012, 15:19
Vor Sonntag werde ich wohl keine Zeit finden und dann muß ich mal sehn, ob ich den Fehler hinbekomm.

Zitat:
Meinst du da ist was hängengeblieben ?
Deswegen hatte ich mir gleich eine VM mit sauberen Delphis installiert ... dort könnte man es dann testen.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#9

AW: XE Memory Leak

  Alt 4. Mai 2012, 15:29
Dann kurz noch zur Erklärung:

Ich hatte mich mit Lokalisierung beschäftigt. Erstens Bordmittel. Projekt-> Sprachen usw. Dann habe ich Lingus probiert (von wicht aus der DP). Einfach und simpel. Die Sprachen wieder rausgeschmissen. Ich habe aber die dproj neu erzeugt, die dcu alle entfernt (Debug\Win32)... was man so halt macht. Ich kann das ganze reproduzieren. Bei jedem anderen Ordner als .\$(Config)\$(Platform) habe ich kein Leak.

Ordnerstruktur: (- = Ordner)
Project
- Debug\Win32 (Leak)
- Debug\1.0 (kein Leak)
- Release\1.0 (wenn es soweit ist)
- Language (res der Sprachen - Lingus)
*.pas
*.dpr
.
.
. (bei Ausgabeordner leer und exe hier, kein Leak)
usw.

...komisches Ding das

Nachtrag:
- bei einem komplett neuem Projekt (Form1) ohne irgendwas, nur mit ReportMemoryLeaksOnShutdown, tritt dieser Effekt auf

Geändert von haentschman ( 4. Mai 2012 um 17:42 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:39 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