AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Programmabsturz nur bei Released Version
Thema durchsuchen
Ansicht
Themen-Optionen

Programmabsturz nur bei Released Version

Ein Thema von menten · begonnen am 26. Jan 2025 · letzter Beitrag vom 29. Jan 2025
Antwort Antwort
menten

Registriert seit: 3. Apr 2009
43 Beiträge
 
Delphi 10.3 Rio
 
#1

Programmabsturz nur bei Released Version

  Alt 26. Jan 2025, 20:40
Hallo zusammen,

bin gerade dabei, für einen Kunden eine ältere Anwendung zu überarbeiten, die eine DLL-Schnittstelle zu einem Druckmessgerät benutzt. Leider habe ich nicht den vollständigen Quellcode bekommen und musste mir die fehlende Teile selbst bauen.

Die Anwendung läuft soweit und auch die Schnittstelle funktioniert. Aber nur, wenn ich die Debug-Version verwende. Sobald ich die Anwendung als Release kompiliere, stürzt die Anwendung ohne Fehlermeldung ab sobald auf die DLL-Schnittstelle zugegriffen wird.

Die Schnittstelle ist von Systronik, benutzt aber verschiedene QT Bibliotheken.

Hat jemand eine Idee?

Danke für jede Hilfe
Stefan Menten
Stefan
  Mit Zitat antworten Zitat
Benutzerbild von Olli73
Olli73

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
772 Beiträge
 
#2

AW: Programmabsturz nur bei Released Version

  Alt 26. Jan 2025, 22:20
Sieht man was in der Windows Ereignisanzeige?

Bei mir hatte es mal tief im Kernel geknallt, hing aber nicht von Release oder debug ab, sondern hing an einer bestimmten serverversion von Windows.
  Mit Zitat antworten Zitat
Klaus01
Online

Registriert seit: 30. Nov 2005
Ort: München
5.777 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Programmabsturz nur bei Released Version

  Alt 27. Jan 2025, 07:47
.. Du kannst eventuell mehr sehen, wenn Du dich mit einer anderen Delphi Instanz an den (Release)-Prozess anhängst.
Run- Attach to process

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
omnibrain

Registriert seit: 11. Nov 2022
81 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Programmabsturz nur bei Released Version

  Alt 27. Jan 2025, 12:23
32 oder 64 Bit? Ist vielleicht in einer Variante ASLR aktiv und in der anderen nicht?
  Mit Zitat antworten Zitat
TomyN

Registriert seit: 8. Nov 2006
Ort: Bayreuth
257 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: Programmabsturz nur bei Released Version

  Alt 27. Jan 2025, 14:03
Evtl. nicht korrekt vorbereitete Parameter beim Aufruf einer API Funktion. Meiner Erfahrung nach geht sowas in der IDE oft gut, aber 'in der freien Wildbahn' nicht.
Thomas Neumann
Meine Projekte
www.satlive.audio
www.levelcheck.de
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: Programmabsturz nur bei Released Version

  Alt 27. Jan 2025, 14:09
Speicherrandomisierung (ASLR), Codeoptimierung usw., es kann vieles sein, was sich zwischen Release und Debug unterscheiden tut.

Wenn solo oder beim Debuggen in der IDE ... auch da kommen dann z.B. noch Timing-Probleme dazu, beim Threadding usw., welche dann beim Debuggen seltener auftritt.

Aber grundsätzlich deutet es darauf hin, dass es eigentlich irgendwo ein Problem gibt. (in eurem Code oder Fremdkomponenten)
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (27. Jan 2025 um 14:12 Uhr)
  Mit Zitat antworten Zitat
menten

Registriert seit: 3. Apr 2009
43 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: Programmabsturz nur bei Released Version

  Alt 27. Jan 2025, 18:37
Hallo zusammen,

danke für die Antworten.

Ich habe die Optimierung ausgeschaltet und dann funktioniert es. Kann sein, dass die Schnittstellendatei der DLL nicht stimmt. Die musste ich rekonstruieren weil sie im Quellcode vom Kunden gefehlt hat. Da muss ich den noch mal antriggern, das er mir einen Kontakt zum Lieferantren der Geräte macht.


Danke und Gruß
Stefan
Stefan
  Mit Zitat antworten Zitat
Kas Ob.

Registriert seit: 3. Sep 2023
386 Beiträge
 
#8

AW: Programmabsturz nur bei Released Version

  Alt 29. Jan 2025, 09:30
Hi,

I have thoughts on this :
Ich habe die Optimierung ausgeschaltet und dann funktioniert es.
You should hunt for uninitialized variables or records fields.

So :
1) If there is warnings then handle them all, make sure they are not silenced too for some units with compiler directives.

2) Delphi compiler generate different code for optimized and non-optimized, but one thing is always there, is the heavy usage of the stack, some times the compiler does good job and skip the stack variables storage for every variable, but one thing is sure, with no optimization it always have a copy on the stack of all local variables including record and most likely will save the parameter to the local function/procedure to the stack too, this will leads to expanded stack with no optimization and shorter stack and more condensed with optimization, so in theory without optimization the stack grow further and more likely to land on zero filled stack, and with optimization it more likely will land on already used stack position (aka dirty stack !), in other words, uninitialized variable in a hidden way or non-direct way was zeroed and worked as initialized when the optimization was disabled, look for those, remember this, if you have filled a field in a locally declared record the compiler will not warn about other fields, and will see it as initialized, so a record on the stack easily can produce your problem.

3) Try to enable optimize per unit with compiler directive (adding it on top of the unit file), it might/could narrow your search, though this is tedious, yet it is faster than reviewing all the code, procedure by procedure and line by line.

Hope that help and good luck.
Kas
  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 18:48 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 by Thomas Breitkreuz