AGB  ·  Datenschutz  ·  Impressum  







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

Stack überlauf

Ein Thema von EWeiss · begonnen am 8. Sep 2016 · letzter Beitrag vom 11. Sep 2016
Antwort Antwort
Seite 2 von 3     12 3      
EWeiss
(Gast)

n/a Beiträge
 
#11

AW: Stack überlauf

  Alt 9. Sep 2016, 07:56
Zitat:
Das finnalize kannst du Debuggen, wenn du auf das end des Projektes
einen Breakpoint setzt und dann F7 drückst.
Ich werde es mal versuchen.
Aber wie schon gesagt mein Problem kann\muss aber nichts mit meinem Code zu tun haben.
Denn wenn ich den Folder umbenenne habe ich das Problem nicht.
Und ich komme zum verrecken nicht darauf woran das liegt.

Trotzdem Danke für deinen Ratschlag werde mich da mal drangeben.

gruss
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#12

AW: Stack überlauf

  Alt 9. Sep 2016, 07:58
Diese kommen aber nicht wenn ich den Folder umbenenne wohlbemerk mit gleichen Code.
Das kann es aber doch nicht sein.
Klingt für mich nach "selbstmodifizierendem Code". Ist der Folder-Name der den Fehlerverursacht vllt. Länger und Überschreibt ggf. eine Adresse? Bereichsprüfung hast Du eingeschaltet?

Gruß
K-H
Nein das ist ein ganz kurzer Name. "Energy"
Wenn ich den Folder nach "Was denn nun" umbenenne oder einfach nur ein S anhänge "Energys" funktioniert alles
und der Code läuft fehlerfrei durch.

Ich habe versucht die Interface hart zu beenden (ohne Referenzzähler) bringt aber auch nichts.

PopupWindow := ISkinPopupWindow;

Beim beenden dann

Delphi-Quellcode:
(PopupWindow as ISkinPopupWindow).Free
PopupWindow := Nil;


Aber das bringt alles nichts sobald ich den Namen verwende kracht es.
Ist schwierig bei solchen Voraussetzungen.

gruss

Geändert von EWeiss ( 9. Sep 2016 um 08:07 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

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

AW: Stack überlauf

  Alt 9. Sep 2016, 08:15
Delphi-Quellcode:
(PopupWindow as ISkinPopupWindow).Free
PopupWindow := Nil;
Du meinst as TSkinPopupWindow, oder?
Aber ob mit oder ohne Referenzzählung, das kann nicht funktionieren. Sobald noch irgendwo ein Interface auf dieses schon freigegebene Objekt existiert, wird beim Finalisieren der Anwendung darin das _Release aufgerufen. Ist das Objekt schon freigegeben, passiert das auf diesem schon freigegebenen Objekt. Im günstigsten Fall knallt es direkt, z.B. wenn FastMM eingebunden ist, im ungünstigsten zerschießt du den Speicher und es knallt ganz woanders.

Ein beliebtes Problem ist, dass ein Interface an eine DLL übergeben wird oder umgekehrt, aber beim Beenden nicht sauber wieder getrennt wird. Insbesondere kann ein Interface, das aus einer DLL kommt, in der Anwendung übrig bleiben, wenn die DLL entladen wird. Deshalb gibt es bei uns Shutdown-Prozeduren, in denen Listener usw. entfernt werden, so dass nach dem Entladen der DLLs keine Leichen übrig bleiben.

Eine andere Möglichkeit wäre, dass du irgendwo ein Objekt als Objekt und Interface parallel nutzt.

Solche Probleme kannst du mit FastMM aber oft schon direkt finden.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#14

AW: Stack überlauf

  Alt 9. Sep 2016, 08:22
Zitat:
Du meinst as TSkinPopupWindow, oder?
Ja richtig
Habe es so eingetippt und nicht nachgedacht.

Wie man am Bild sehen kann (ein langer Name für den Folder und kein Problem.

Langer Ordner Name so heißt dann der Skin

Ich habe damit keinerlei Probleme.
Das verstehe ich nicht.

Umbenannt
Und es kracht.

gruss

Geändert von EWeiss ( 9. Sep 2016 um 08:37 Uhr)
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.944 Beiträge
 
Delphi 12 Athens
 
#15

AW: Stack überlauf

  Alt 9. Sep 2016, 11:01
Ich weiß nicht ob ich eine hilfe sein kann, weil ja schon alle die über die Interna Delphis bescheid wissen geantwortet haben.
Aber ich hatte auch mal ein Problem mit namen in Delphi und vielleicht nimmt der Stacküberlauf ja in einem ganz trivialen Problem den Anfang.

Wegen der Message Queue soll man ja Formulare nicht mit Free zerstören sondern mit Release.
Ich habe die Erfahrung gemacht dass man obwohl man ein Formular mit Release zerstört hat nicht sofort danach wieder ein Formular mit selben namen erzeugen kann.
Es führt zu einer Exception. ...unique component name....bla
Hab nen globalen ID counter an alle Formular-Namen anhängen müssen und ne eigene Methode für Namensvergleiche geschrieben um dem Herr zu werden.

Kann es sein dass es irgendwo in deinem Projekt noch einen String "Energy" gibt der als Componentname Verwendung findet während des Abräumens der Anwendung? Vielleicht eine Liste von TCompoents oder so?
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#16

AW: Stack überlauf

  Alt 9. Sep 2016, 15:56
Hallo,

"Energy" darf der Ordner ja eh nicht heissen.

Das Wort ist doch für uns Trekkies reserviert
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.800 Beiträge
 
Delphi 12 Athens
 
#17

AW: Stack überlauf

  Alt 9. Sep 2016, 16:00
Engage...oder eben Energie.

https://www.youtube.com/watch?v=3jd1Ih8EUmw

Ausser natürlich: https://www.youtube.com/watch?v=bUtz...utu.be&t=8m20s

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann

Geändert von Sherlock ( 9. Sep 2016 um 16:17 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#18

AW: Stack überlauf

  Alt 9. Sep 2016, 16:39
Mal so ins Blaue
a) Vergrößere den Stack, dann gibt's keine Fehlermeldung mehr (nicht ernst gemeint)
b) Verkleinere den Stack, dann knallt es früher, und vllt. an der richtigen Stelle.
c) Was ist der Unterschied zwischen Energie/y und den anderen Skins abgesehen vom Namen? wird da etwas rekursiv aufgerufen?

Und natürlich ganz banal, der Stack läuft über wenn man zuviel darauf schiebt.

Ich weiß jetzt auch nicht mehr ob "Stack Frame" Dir beim Finden des Fehlers hilft. Irgendwann vor langer Zeit, war das auf jeden Fall empfehlenswert.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#19

AW: Stack überlauf

  Alt 9. Sep 2016, 18:05
Zitat:
Vielleicht eine Liste von TCompoents oder so?
Der Name hat keinerlei Bezug zum Quelltext wenn man davon absieht das ich rekursive im Skin Ordner nach den Namen Anwendung.ske suche.

Also wenn diese Soundmachine.exe heißt suche ich nach dem Konfigurationsfile Soundmachine.ske
Wenn gefunden wird der Name des Folder als Skin identifiziert und damit zum Menu addiert.

Daher verstehe ich den Bezug nicht warum nur wegen der Namensgebung ein Überlauf stattfindet.

Zitat:
Und natürlich ganz banal, der Stack läuft über wenn man zuviel darauf schiebt.
Dann müsste er eher bei Energys überlaufen anstatt bei Energy.
Klar kann ich einen anderen Namen verwenden nur das ist nicht der sinn der Sache.

Zitat:
Das Wort ist doch für uns Trekkies reserviert
Genau darauf ist er ja auch ausgelegt.


gruss

Geändert von EWeiss ( 9. Sep 2016 um 18:27 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#20

AW: Stack überlauf

  Alt 9. Sep 2016, 22:32
Kannst du mal ausprobieren, ob es an dem String Energy liegt, oder ob auch ein anderer Text mit gleicher Länge das Problem zeigt?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 23: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