Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Delphi 12: Fehler mit Action := caFree (https://www.delphipraxis.net/214191-delphi-12-fehler-mit-action-%3D-cafree.html)

WiWo 1. Dez 2023 08:50

Delphi 12: Fehler mit Action := caFree
 
Die Forms in meinem Projekt werden immer nur instanziert, wenn sie benötigt werden (also nicht im .DPR) und beim schließen wieder freigegeben. indem ich im FormClose-Event Action := caFree setze. Das mache ich seit 25 Jahren so durch alle Delphi-Versionen hindurch.
Mit Delphi 12 crasht es beim Schließen, wenn die Form größere Datenmengen enthält (nur dann!). Ist auch einfach nachzustellen. Kann jemand sonst noch diesen Effekt bestätigen?

unit Unit2;

interface

uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
TForm2 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
xxx: array[1..999999] of byte; // a lot of additional data in this object
end;

implementation

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);
begin
Self.Close;
end;

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;

himitsu 1. Dez 2023 09:25

AW: Delphi 12: Fehler mit Action := caFree
 
Nein, knallt hier nicht.
Nichtmal mit 1000 Mal mehr Daten.
Delphi-Quellcode:
xxx: array[1..999999999] of byte;


Also im Win32.
Mit Win64 gibt es hier noch den Bug, dass sich nichts im Debugger starten lässt. Aber das ist eine andere Sache.


PS: Da gibt es einen Delphi-Knopf im BeitragsEditor, bzw. einfach direkt [DELPHI]code[/DELPHI] drumrum. :zwinker:

freimatz 1. Dez 2023 10:18

AW: Delphi 12: Fehler mit Action := caFree
 
Zitat:

Zitat von WiWo (Beitrag 1530288)
Mit Delphi 12 crasht es beim Schließen, ...

"crasht" ist auch ein bischen unspezifisch ... :wink:

himitsu 1. Dez 2023 10:28

AW: Delphi 12: Fehler mit Action := caFree
 
Hast Recht.

Strg+C funktioniert in Fehlerdialogen, sowie auch in den Logs, der Delphi-IDE.
Und dann hier via Strg+V, z.B. in ein [QUOTE]der Fehlertext[/QUOTE].

WiWo 1. Dez 2023 12:40

AW: Delphi 12: Fehler mit Action := caFree
 
Erstmal Danke für die Rückmeldungen.

Sorry, "crasht" ist natürlich blöd ausgedrückt. Ich bekomme eine $C0000005-Exception "access violation at..". Wenn ich im Debugger dann stoppe, stehe ich in Vcl.Forms auf der Zeile "if not FVisualManagerInitialized then".
Zusatzinfos noch:
Win32-VCL-Anwendung
OS: Windows 11
ob das Formular ein MDI-Client ist oder nicht spielt keine Rolle. Auch nicht, ob Modal aufgerufen oder nicht.
Im übergeordneten Haupt-Formular mache ich nichts weiteres als "Form2 := TForm2.Create(Application)", wobei Form2 eine globale Variable ist.
Es gibt keinerlei Unsicherheiten bei der Reproduzierbarkeit.

jaenicke 1. Dez 2023 12:47

AW: Delphi 12: Fehler mit Action := caFree
 
Kannst du es auch in einem kleinen Beispielprojekt reproduzieren oder nur in deinem echten Projekt? Wenn du den Fehler auch in einem Beispielprojekt bekommst, könntest du das hier bitte anhängen. Wenn du es nur in deinem echten Projekt bekommst, liegt das Problem woanders. Dann ist da im Speicher wohl etwas nicht in Ordnung.

Du könntest einmal mit FastMM versuchen, ob du dort Speicherfehler angezeigt bekommst.

himitsu 1. Dez 2023 12:58

AW: Delphi 12: Fehler mit Action := caFree
 
Wenn's im Debugger knallt, dann auch den Stacktrace hier posten.

Und dann vielleicht noch sowas wie madExcept/Eurekalog/...


Wobei ich grade selbst einen schönen Fehler bei mir hab, der im Debugger nie knallt. (vermutlich irgendwas mit Threading, wo es im Debugger zeitlich langsamer nicht knallt)

WiWo 1. Dez 2023 13:29

AW: Delphi 12: Fehler mit Action := caFree
 
Liste der Anhänge anzeigen (Anzahl: 1)
ich hab jetzt das Projekt sowie als Screenshot den Zustand nach der Exception rangehängt.
Bemerkt hab ich den Fehler zuerst in einem wirklich riesigen Projekt und ziemlich lange gebraucht, bis ich die Ursache gefunden hatte. Aber auch schon mit dem angehängten Winzigst-Projekt krieg ich den Fehler.
Mein Delphi-Build ist übrigens 29.0.50491.5718; ich weiß nicht, ob da grad noch kleine Updates gemacht werden.

Kas Ob. 1. Dez 2023 14:01

AW: Delphi 12: Fehler mit Action := caFree
 
Zitat:

Zitat von WiWo (Beitrag 1530306)
ich hab jetzt das Projekt sowie als Screenshot den Zustand nach der Exception rangehängt.
Bemerkt hab ich den Fehler zuerst in einem wirklich riesigen Projekt und ziemlich lange gebraucht, bis ich die Ursache gefunden hatte. Aber auch schon mit dem angehängten Winzigst-Projekt krieg ich den Fehler.
Mein Delphi-Build ist übrigens 29.0.50491.5718; ich weiß nicht, ob da grad noch kleine Updates gemacht werden.

I am out of words and at loss of straight thinking !
WTF is that stack ?
Did Embarcadero completely redesigned the TApplication in VCL ? and butchered it in the process ?

How the stack is starting at TApplication.ProcessMessage ? and where TApplication.ProcessMessages (in plural) ?
Did they handling that in a background thread ? with there most prized with anonymous procedure ?

Anyway, sorry about that rant, while i don't have newer Delphi and don't now what VisualManager is.

One quick question, (for real ):
for any empty and new VCL project, nothing added or changed except a break point on Close the main form, how the stack would look like for both x32 and x64, would someone share here with Delphi 12 ?

peterbelow 2. Dez 2023 12:15

AW: Delphi 12: Fehler mit Action := caFree
 
Zitat:

Zitat von Kas Ob. (Beitrag 1530307)
I am out of words and at loss of straight thinking !
WTF is that stack ?
Did Embarcadero completely redesigned the TApplication in VCL ? and butchered it in the process ?

In D12 they completely reworked the support for MDI UIs to allow all the modern features users expect on Win 10 and 11. There probably are a lot of legacy MDI programs around that are in dire need of updating and from Embarcadero customers with some clout :wink:...

This Visual manager thing was appearendly introduced to implement this support, but they introduced a bug in the process as well.
At the very end of TCustomForm.WndProc there are these lines:

Delphi-Quellcode:
  inherited WndProc(Message);

  if VisualManager_AcceptMessage(Message) then
    VisualManager_WndProc(Message);
end;
Closing a secondary form with an OnClose handler that sets caFree as close action eventually calls TCustomform.Release, which posts a CM_RELEASE message to the form. The inherited WndProc call above passes that to the CMRelease message handler, which Frees the form instance. So the form self reference is invalid when VisualManager_AcceptMessage is called, and since that method tries to read a field of the form it blows up.

peterbelow 2. Dez 2023 12:20

AW: Delphi 12: Fehler mit Action := caFree
 
Zitat:

Zitat von WiWo (Beitrag 1530306)
ich hab jetzt das Projekt sowie als Screenshot den Zustand nach der Exception rangehängt.
Bemerkt hab ich den Fehler zuerst in einem wirklich riesigen Projekt und ziemlich lange gebraucht, bis ich die Ursache gefunden hatte. Aber auch schon mit dem angehängten Winzigst-Projekt krieg ich den Fehler.
Mein Delphi-Build ist übrigens 29.0.50491.5718; ich weiß nicht, ob da grad noch kleine Updates gemacht werden.

Ich kann das Problem in D12 reproduzieren, nur die Fehleradressen sind nicht immer gleich. Das ist ein echter Bug, der beim Implementieren des verbesserten MDI-Supports in TCustomForm.WndProc eingebaut wurde, siehe Post #9 in diesem Thread.

Bitte sei so nett und lege einen Bugreport mit deinem Beispielprogramm auf quality.embarcadero.com an.

Kas Ob. 2. Dez 2023 12:37

AW: Delphi 12: Fehler mit Action := caFree
 
Zitat:

Zitat von peterbelow (Beitrag 1530328)
Zitat:

Zitat von Kas Ob. (Beitrag 1530307)
I am out of words and at loss of straight thinking !
WTF is that stack ?
Did Embarcadero completely redesigned the TApplication in VCL ? and butchered it in the process ?

In D12 they completely reworked the support for MDI UIs to allow all the modern features users expect on Win 10 and 11. There probably are a lot of legacy MDI programs around that are in dire need of updating and from Embarcadero customers with some clout :wink:...

This Visual manager thing was appearendly introduced to implement this support, but they introduced a bug in the process as well.
At the very end of TCustomForm.WndProc there are these lines:

Delphi-Quellcode:
  inherited WndProc(Message);

  if VisualManager_AcceptMessage(Message) then
    VisualManager_WndProc(Message);
end;
Closing a secondary form with an OnClose handler that sets caFree as close action eventually calls TCustomform.Release, which posts a CM_RELEASE message to the form. The inherited WndProc call above passes that to the CMRelease message handler, which Frees the form instance. So the form self reference is invalid when VisualManager_AcceptMessage is called, and since that method tries to read a field of the form it blows up.

Thank you for the details, i really appreciate it, still one thing you did not confirm yet, and will be really insightful.
On you Delphi is the stack cut at TApllicatiom.ProcessMessage too ? like WiWo screenshot, that is a problem not smaller the broken design !

peterbelow 2. Dez 2023 13:29

AW: Delphi 12: Fehler mit Action := caFree
 
Zitat:

Zitat von Kas Ob. (Beitrag 1530330)
Thank you for the details, i really appreciate it, still one thing you did not confirm yet, and will be really insightful.
On you Delphi is the stack cut at TApllicatiom.ProcessMessage too ? like WiWo screenshot, that is a problem not smaller the broken design !

If I run to a breakpoint in the OnClose handler the full call stack looks like this

Unit2.TForm2.FormClose($7F650010,caHide)
Vcl.Forms.TCustomForm.DoClose(???)
Vcl.Forms.TCustomForm.Close
Unit2.TForm2.Button1Click($3157C10)
Vcl.Controls.TControl.Click
Vcl.StdCtrls.TCustomButton.Click
Vcl.StdCtrls.TCustomButton.CNCommand(???)
Vcl.Controls.TControl.WndProc((48401, 1634, 591458, 0, 1634, 0, (), 1634, 9, (), 0, 0, ()))
Vcl.Controls.TWinControl.WndProc((48401, 1634, 591458, 0, 1634, 0, (), 1634, 9, (), 0, 0, ()))
Vcl.StdCtrls.TButtonControl.WndProc((48401, 1634, 591458, 0, 1634, 0, (), 1634, 9, (), 0, 0, ()))
Vcl.Controls.TControl.Perform(???,???,591458)
Vcl.Controls.DoControlMsg(???,(no value))
Vcl.Controls.TWinControl.WMCommand((273, (), 1634, 0, (), 591458, 0))
Vcl.Forms.TCustomForm.WMCommand((273, (), 1634, 0, (), 591458, 0))
Vcl.Controls.TControl.WndProc((273, 1634, 591458, 0, 1634, 0, (), 1634, 9, (), 0, 0, ()))
Vcl.Controls.TWinControl.WndProc((273, 1634, 591458, 0, 1634, 0, (), 1634, 9, (), 0, 0, ()))
Vcl.Forms.TCustomForm.WndProc((273, 1634, 591458, 0, 1634, 0, (), 1634, 9, (), 0, 0, ()))
Vcl.Controls.TWinControl.MainWndProc(???)
System.Classes.StdWndProc(657428,273,1634,591458)
:75d40eab USER32.AddClipboardFormatListener + 0x4b
:75d37e5a ; C:\WINDOWS\SysWOW64\USER32.dll
:75d37239 ; C:\WINDOWS\SysWOW64\USER32.dll
:75d3587f USER32.SendMessageW + 0x6f
:6e0c6618 ; C:\WINDOWS\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.19041.3636_none_a863 d714867441db\comctl32.dll
:6e105f33 ; C:\WINDOWS\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.19041.3636_none_a863 d714867441db\comctl32.dll
:75d40eab USER32.AddClipboardFormatListener + 0x4b
:75d37e5a ; C:\WINDOWS\SysWOW64\USER32.dll
:75d37537 ; C:\WINDOWS\SysWOW64\USER32.dll
:75d356db USER32.CallWindowProcW + 0x1b
Vcl.Controls.TWinControl.DefaultHandler(???)
:005ff9e2 TWinControl.DefaultHandler + $136
:005ff88c TWinControl.WndProc + $6AC
:00614f89 TButtonControl.WndProc + $71
:00588db2 StdWndProc + $16
:75d40eab USER32.AddClipboardFormatListener + 0x4b
:75d37e5a ; C:\WINDOWS\SysWOW64\USER32.dll
:75d35bca ; C:\WINDOWS\SysWOW64\USER32.dll
:75d35990 USER32.DispatchMessageW + 0x10

Kas Ob. 2. Dez 2023 13:52

AW: Delphi 12: Fehler mit Action := caFree
 
Zitat:

Zitat von peterbelow (Beitrag 1530332)
If I run to a breakpoint in the OnClose handler the full call stack looks like this

Unit2.TForm2.FormClose($7F650010,caHide)
Vcl.Forms.TCustomForm.DoClose(???)

Well, that is normal, and there is no ProcessMessage there, the stack when the exception raised is the most critical to find/capture, hence my question about why it is cut in the screenshot, or just the debugger is failing to walk the stack which indicate bigger/deeper issue in RTL/VCL flow like stack overflow (overwrite, wrong declaration..) or just a reproducible debugger failure.

peterbelow 3. Dez 2023 12:20

AW: Delphi 12: Fehler mit Action := caFree
 
Zitat:

Zitat von Kas Ob. (Beitrag 1530333)

Well, that is normal, and there is no ProcessMessage there, the stack when the exception raised is the most critical to find/capture, hence my question about why it is cut in the screenshot, or just the debugger is failing to walk the stack which indicate bigger/deeper issue in RTL/VCL flow like stack overflow (overwrite, wrong declaration..) or just a reproducible debugger failure.

If I let the IDE break on the exception the call stack does look like in original post:

Vcl.Forms.TCustomForm.VisualManager_AcceptMessage( (45089, 0, 0, 0, 0, 0, (), 0, 0, (), 0, 0, ()))
Vcl.Forms.TCustomForm.WndProc((9960336, 9960352, 9960168, 9960168, 64416, 151, (), 64232, 151, (), 64232, 151, ()))
Vcl.Controls.TWinControl.MainWndProc(???)
System.Classes.StdWndProc(721212,45089,0,0)
:75d40eab USER32.AddClipboardFormatListener + 0x4b
:75d37e5a ; C:\WINDOWS\SysWOW64\USER32.dll
:75d35bca ; C:\WINDOWS\SysWOW64\USER32.dll
:75d35990 USER32.DispatchMessageW + 0x10
Vcl.Forms.TApplication.ProcessMessage(???)

That is what I would expect in this situation since the code flow after the PostMessage for the cm_release message returns to the main message loop in TApplication.Run, and thus the call stack unwinds to that location. There is no way to determine where in the code the message was posted, so the debugger cannot show that. Of course that is unfortunate in this case since the stack does not reveal the actual cause of the problem, but we have to live with it since that's how Windows apps work. The debugger can do nothing for us here, the info it would need is simply not there.

Kas Ob. 3. Dez 2023 12:48

AW: Delphi 12: Fehler mit Action := caFree
 
Zitat:

Zitat von peterbelow (Beitrag 1530359)
That is what I would expect in this situation since the code flow after the PostMessage for the cm_release message returns to the main message loop in TApplication.Run, and thus the call stack unwinds to that location. There is no way to determine where in the code the message was posted, so the debugger cannot show that. Of course that is unfortunate in this case since the stack does not reveal the actual cause of the problem, but we have to live with it since that's how Windows apps work. The debugger can do nothing for us here, the info it would need is simply not there.

Well, i disagree on expecting that behavior, my thoughts on this can be reduced to this:
1) The stack is corrupted and that is that, meaning unwind will fail to find the last SEH handler (or SEH chain) and the app will crash, in case OS catch an unhandled exception (through its own SEH) that return to specific positions, it will terminate the process, return position they are .. like if a background thread raised an exception without SEH trap, the OS will unwind and find it pointing to its origin in the kernel that called from CreateThread then the app is doomed and will be terminated then and there, also if the main thread raised an exception, and in unwinding the OS found it pointing to the code responsible for CreateProcess then also the app is done and gone, now if this is the case and it is confirmed by two users you and OP then this is reproducible RTL/VCL bug.
2) The stack is fine and the debugger is failing to walk it, then this is a debugger bug, also confirmed by 2 users.
3) Irrelevant to the stack and what the debugger is able show/walk/report, this exception confirmed by 2 users, and this is reproducible RTL/VCL bug.

So in all case this is a bug and need to be reported/fixed.

as for Vcl.Forms.TApplication.ProcessMessage being the first/oldest reported by the debugger, these is no more clearer report that there is a bug and it concern the stack itself or the debugger, like above either the debugger had failed or the stack already damaged/corrupted byt the RTL/VCL itself.
Also Vcl.Forms.TApplication.ProcessMessage is Delphi code and it is not an OS callback function, hence should and must have another code calling it from within Delphi code and that code (procedure/function) should be on the stack too, as simple as that.

TurboMagic 3. Dez 2023 14:23

AW: Delphi 12: Fehler mit Action := caFree
 
Zitat:

Zitat von peterbelow (Beitrag 1530328)
This Visual manager thing was appearendly introduced to implement this support, but they introduced a bug in the process as well.
At the very end of TCustomForm.WndProc there are these lines:

Delphi-Quellcode:
  inherited WndProc(Message);

  if VisualManager_AcceptMessage(Message) then
    VisualManager_WndProc(Message);
end;
Closing a secondary form with an OnClose handler that sets caFree as close action eventually calls TCustomform.Release, which posts a CM_RELEASE message to the form. The inherited WndProc call above passes that to the CMRelease message handler, which Frees the form instance. So the form self reference is invalid when VisualManager_AcceptMessage is called, and since that method tries to read a field of the form it blows up.

Thanks for this thorough analysis!
Did you already check if that bug is already known? Means a QP report for it exists?
If none exists yet, would you be so kind to file one?

Ok, I just saw your last post in german on tis matter where you ask the OP to create a QP report if none exists yet.
So please disregard this one. The OP should use your material though, as this looks like a quite good starting point
for fixing it.

peterbelow 3. Dez 2023 14:29

AW: Delphi 12: Fehler mit Action := caFree
 
Zitat:

Zitat von Kas Ob. (Beitrag 1530360)

So in all case this is a bug and need to be reported/fixed.

as for Vcl.Forms.TApplication.ProcessMessage being the first/oldest reported by the debugger, these is no more clearer report that there is a bug and it concern the stack itself or the debugger, like above either the debugger had failed or the stack already damaged/corrupted byt the RTL/VCL itself.
Also Vcl.Forms.TApplication.ProcessMessage is Delphi code and it is not an OS callback function, hence should and must have another code calling it from within Delphi code and that code (procedure/function) should be on the stack too, as simple as that.

The problem itself is a bug, no argument. But the debugger is not faulty, the stack is not corrupted. It correctly reports the location at which the exception was raised. That is just not the location that is at the root of the problem, but that is fairly often the case.

Kas Ob. 3. Dez 2023 16:08

AW: Delphi 12: Fehler mit Action := caFree
 
Zitat:

Zitat von peterbelow (Beitrag 1530363)
The problem itself is a bug, no argument. But the debugger is not faulty, the stack is not corrupted. It correctly reports the location at which the exception was raised. That is just not the location that is at the root of the problem, but that is fairly often the case.

I am sorry, may be didn't explain this clearly.

The debugger is reporting only 9 calls and stopped at TApplication.ProcessMesage , this call explicitly means there is more to it and it could be helpful or it could be not, but that is not up to the debugger to decide, it should go deeper, you already pasted two stacks report, so why one is over 50 walked and the real needed one with an exception is stopped/cut at 9 ?

That is my point about failing or buggy debugger.

Also see your first stack there is no ProcessMessages or ProcessMessage, so why that specific call in the stack (on exception) to begin with ?
If you noticed in the first stack (long) the whole process is logical and right, on other hand with the one with the exception also looks logical and fine but where and who (or whom ? bad English) did call it ?

All stacks should be resolved/walked to the origin, in the first one +50 was enough but if you want to go deeper, you should pass TApplication.Run and continue into address inside the kernel, same with threads but-there will be any TApplication.xxxx ,because they are what are they, threads.

Now back to the case at hand, Who did call ProcessMessage(MSG), and why the debugger stopped or failed to continue walking the stack from there to something declaring it is in fact the main thread form UI main message handling.

Did Application.ProcessMessages called form he main thread by design from the VCL ???? that ducked up to say the least, and that from an event triggered by the UI, well i am out of words here.
Yet again will repeat it, even if that is the case then ProcessMessage that reported in the stack should have a caller reported and resolved by the debugger.

Sorry again if that is still not clear, but i hope it might be.

TurboMagic 3. Dez 2023 20:23

AW: Delphi 12: Fehler mit Action := caFree
 
Zitat:

Zitat von peterbelow (Beitrag 1530363)
Zitat:

Zitat von Kas Ob. (Beitrag 1530360)

So in all case this is a bug and need to be reported/fixed.


Meanwhile somebody else has reported the original issue:
https://quality.embarcadero.com/browse/RSP-43547

You might want to vote for it.

Kas Ob. 4. Dez 2023 06:51

AW: Delphi 12: Fehler mit Action := caFree
 
Zitat:

Zitat von TurboMagic (Beitrag 1530374)
Meanwhile somebody else has reported the original issue:
https://quality.embarcadero.com/browse/RSP-43547

Good to hear.

Still the question, is there a bug in the debugger walking the stack ?
The bug is reliably reproducible, and that stack is reliably reproducible, this is the perfect chance to track this and solve for good.

And the question still there, could you (anyone with Delphi 12) track it and confirm the bug in the debugger, you could use Madshi or EurekaLog and compare the stack, also a breakpoint on TApplication.ProcessMessage and capture the stack at that point, another right before the exception, then after (it will break on its own), compare them and confirm if there is a failure in stack walking.

Again, i am just saying this is very lucky situation to get things fixed.

WiWo 4. Dez 2023 11:39

AW: Delphi 12: Fehler mit Action := caFree
 
ich hab inzwischen auch das Beispiel-Projekt bei RSP-43547 hochgeladen, da der ursprüngliche Poster nichts weiter hochgeladen hatte und vielleicht auch die Zusatzbedingung mit der Speichergröße des Formularobjekts nicht erkannt hat.

WiWo

peterbelow 4. Dez 2023 13:02

AW: Delphi 12: Fehler mit Action := caFree
 
Zitat:

Zitat von Kas Ob. (Beitrag 1530368)
I am sorry, may be didn't explain this clearly.

The debugger is reporting only 9 calls and stopped at TApplication.ProcessMessage , this call explicitly means there is more to it and it could be helpful or it could be not, but that is not up to the debugger to decide, it should go deeper, you already pasted two stacks report, so why one is over 50 walked and the real needed one with an exception is stopped/cut at 9 ?

You seem to have a serious misunderstanding of how the call stack works. In a VCl app practically all code in the main thread is executed in response to a posted message, so the base of the call stack is TApplication.ProcessMessage, at least all the code flow interesting for debugging starts from there. There are a few instruction below that point, which get executed during program startup. but the flow never returns to them until the program is terminated. In the case of the exception stack the path from ProcessMessages to the exception was short, so the call stack shown has few entries. In the case of the breakpoint in OnClose the path was much longer from ProcessMessages to the breakpoint.

Kas Ob. 4. Dez 2023 14:14

AW: Delphi 12: Fehler mit Action := caFree
 
Zitat:

Zitat von peterbelow (Beitrag 1530390)
You seem to have a serious misunderstanding of how the call stack works.

Well, i am half down and the other half is slow, so will not challenge that.

Zitat:

Zitat von peterbelow (Beitrag 1530390)
In a VCl app practically all code in the main thread is executed in response to a posted message, so the base of the call stack is TApplication.ProcessMessage, at least all the code flow interesting for debugging starts from there.

Can you please confirm if a button click go though TApllication.ProcessMessage ? or an event triggered like TForm.OnShow went through that ? because it doesn't,
ProcessMessage in TApllication ..
Well, as you said i am lacking understanding of stack working and VCL design, who knows may be there are, i must simply don't know.

So please forgive me for wasting your time.

TurboMagic 4. Dez 2023 19:12

AW: Delphi 12: Fehler mit Action := caFree
 
Zitat:

Zitat von WiWo (Beitrag 1530385)
ich hab inzwischen auch das Beispiel-Projekt bei RSP-43547 hochgeladen, da der ursprüngliche Poster nichts weiter hochgeladen hatte und vielleicht auch die Zusatzbedingung mit der Speichergröße des Formularobjekts nicht erkannt hat.

WiWo

Prima! Danke dafür!
TurboMagic

TurboMagic 4. Dez 2023 19:17

AW: Delphi 12: Fehler mit Action := caFree
 
Hello,

in the VCL somewhere there is sort of a message processing loop.
It calls GetMessage from Windows API.

If you use a control which internally directly uses a Windows own
control that will fire its events on receiving the apropriate messages.

If you block the main thread it cannot process this message loop pointed above
and thus the GUI looks non responsive, as messages like WM_PAINT are not handled.

That's the base. More details can be found in Petzold's "Programming Windows"
book. At least in the old versions.

Cheers

TurboMagic

peterbelow 5. Dez 2023 12:53

AW: Delphi 12: Fehler mit Action := caFree
 
Zitat:

Zitat von Kas Ob. (Beitrag 1530394)
Can you please confirm if a button click go though TApllication.ProcessMessage ? or an event triggered like TForm.OnShow went through that ? because it doesn't,
ProcessMessage in TApllication ..
Well, as you said i am lacking understanding of stack working and VCL design, who knows may be there are, i must simply don't know.

So please forgive me for wasting your time.

The mouse button down and up messages are posted messages (by the OS), are retrieved (GetMessage/PeekMessage API) and processed (DispatchMessage API) by ProcessMessage. TButton is a wrapper aound the Windows BUTTON control and that reacts to the dispatched mouse messages by sending (not posting) a BN_CLICKED notification to its parent. The VCL reflects that back to the TButton control and there it fires the OnClick event. So if you examine the call stack from a breakpoint in the OnClick event handler you do not see ProcessMessage on it since there is a heap of OS stuff in between. It is similar for a form's OnShow, the message triggering it is send (by the OS), not posted, so it does not go through ProcessMessage.

Most posted messages are created by user action (mouse, keyboard), timers, or OS activities that do not require immediate response, e.g. paint requests. Those are retrieved and distributed by ProcessMessage. But there are a lot of other messages that are directly send to the window/control they are for, and those do not go through ProcessMessage.

Messages are the fuel that drives the Windows UI layer and a lot of other parts of the OS. To get a basic understanding of this stuff you need to work your way through one of the older "Programming Windows" books by Charles Petzold (not the newer ones targeted at .NET/C# programmers). If you survive you will have a much deeper appreciation for what the VCL shields us from. :wink:

To get a feeling for the message processing in the VCL you may want to read an old article on key processing I wrote an eon ago: A Key's Odyssey.

Kas Ob. 5. Dez 2023 17:43

AW: Delphi 12: Fehler mit Action := caFree
 
Zitat:

Zitat von peterbelow (Beitrag 1530431)
To get a feeling for the message processing in the VCL you may want to read an old article on key processing I wrote an eon ago: A Key's Odyssey.

Thank you for the details, and definitely will read that article if that page decided to load on the browser.

Sorry again, we miss targeting the subject, as this wasn't my point, my point is the Call Stack reporting by debugger is either faulty or wrong, you assumed the the code before ProcessMessage is short and irrelevant, in my opinion that is false assumption based on simple fact or situation, as example, if the application called Application.ProcessMessages then ProcessMessage could be called again hence we end up with two on the stack, comes the debugger and cuts the for the latest one, and send us into goose chase.

We can't call Delphi debugger smart or AI powered to decide for us when and where to cut the stack list, as it is dumb as an ash tray.

I can list the main problems or shortcoming with debugger Call Stack :
1) it is wrong to cut or stop reporting on addresses as it wish (predefined on based on what ?), who decide this, and why it is not limited by a settings in case it will hinder the speed, (like it has space shuttle speed).
2) more than 2 decades with the same debugger that only resolve Delphi address symbols and yet there is no resolving for the OS libraries like User32 or the Kernel, the Debug Library Helper (DbgHelp.dll) is shipped with every Windows OS for eons and it does in fact resolve them, this also could be a setting to switch (so we can reach Mars a little sooner).
3) the debugger is skipping addresses on his own, again without justification, this will leads to hindering the debugging process itself, and wrongly reporting logic flow.

Here an example from EurekaLog Call Stack, it is nice and detailed
Code:
Call Stack Information:
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|Methods |Details|Stack  |Address |Module     |Offset |Source                               |Unit         |Class        |Procedure/Method                                 |Line                                             |
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|*Exception Thread: ID=1332; Parent=0; Priority=0                                                                                                                                                                                   |
|Class=; Name=MAIN                                                                                                                                                                                                                 |
|DeadLock=0; Wait Chain=                                                                                                                                                                                                           |
|Comment=                                                                                                                                                                                                                          |
|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|7FFFFFFE|04     |00000000|00789469|Project5.exe|00389469|Unit10.pas                           |Unit10        |TForm10       |Button1Click                                     |28[1]                                            |
|00000060|04     |0019F3CC|00697D73|Project5.exe|00297D73|Vcl.Controls.pas                     |Vcl.Controls |TControl     |Click                                            |7361[9]                                          |
|00000020|04     |0019F3D8|006AEF2E|Project5.exe|002AEF2E|Vcl.StdCtrls.pas                     |Vcl.StdCtrls |TCustomButton |Click                                            |5327[3]                                          |
|00000020|04     |0019F3E0|006AFA3C|Project5.exe|002AFA3C|Vcl.StdCtrls.pas                     |Vcl.StdCtrls |TCustomButton |CNCommand                                        |5788[1]                                          |
|00000020|04     |0019F3E8|00697805|Project5.exe|00297805|Vcl.Controls.pas                     |Vcl.Controls |TControl     |WndProc                                          |7245[91]                                         |
|00000020|03     |0019F400|73789581|comctl32.dll|00049581|comctl32.dll                         |comctl32      |              | (possible InitCommonControlsEx+4449)            |                                                  |
|00000020|03     |0019F404|7451ED71|user32.dll |0001ED71|USER32.dll                           |USER32        |              |NotifyWinEvent                                   |                                                  |
|00000020|03     |0019F410|77172857|ntdll.dll  |00042857|ntdll.dll                            |ntdll        |              |RtlDeactivateActivationContextUnsafeFast         |                                                  |
|00000020|03     |0019F424|7716FA8B|ntdll.dll  |0003FA8B|ntdll.dll                            |ntdll        |              |RtlActivateActivationContextUnsafeFast           |                                                  |
|00000020|03     |0019F428|73789581|comctl32.dll|00049581|comctl32.dll                         |comctl32      |              | (possible InitCommonControlsEx+4449)            |                                                  |
|00000020|03     |0019F438|77172857|ntdll.dll  |00042857|ntdll.dll                            |ntdll        |              |RtlDeactivateActivationContextUnsafeFast         |                                                  |
|00000020|03     |0019F444|7453BF19|user32.dll |0003BF19|USER32.dll                           |USER32        |              | (possible AddClipboardFormatListener+1177)      |                                                  |
|00008020|03     |0019F494|74538436|a          |00038436|{38E0C963-48A9-4649-A681-F4F0B4371047}|recursive    |area         |removed                                          |4[0]                                             |
|00000020|03     |0019F498|745383E5|user32.dll |000383E5|USER32.dll                           |USER32        |              | (possible DispatchMessageW+2421)                |                                                  |
|00000020|03     |0019F4A8|745386A6|user32.dll |000386A6|USER32.dll                           |USER32        |              | (possible DispatchMessageW+3126)                |                                                  |
|00000020|03     |0019F4AC|74538409|user32.dll |00038409|USER32.dll                           |USER32        |              | (possible DispatchMessageW+2457)                |                                                  |
|00000020|03     |0019F4BC|74538436|user32.dll |00038436|USER32.dll                           |USER32        |              | (possible DispatchMessageW+2502)                |                                                  |
|00000020|03     |0019F4F0|74538239|user32.dll |00038239|USER32.dll                           |USER32        |              | (possible DispatchMessageW+1993)                |                                                  |
|00000020|03     |0019F4F4|745386A6|user32.dll |000386A6|USER32.dll                           |USER32        |              | (possible DispatchMessageW+3126)                |                                                  |
|00000060|04     |0019F514|0069C3AD|Project5.exe|0029C3AD|Vcl.Controls.pas                     |Vcl.Controls |TWinControl  |WndProc                                          |10079[158]                                       |
|00000020|03     |0019F520|758F3411|kernel32.dll|00043411|KERNEL32.DLL                         |KERNEL32      |              | (possible GetAtomNameW+705)                     |                                                  |
|00000060|04     |0019F560|006AEBD8|Project5.exe|002AEBD8|Vcl.StdCtrls.pas                     |Vcl.StdCtrls |TButtonControl|WndProc                                          |5164[13]                                         |
|00000020|04     |0019F570|00697440|Project5.exe|00297440|Vcl.Controls.pas                     |Vcl.Controls |TControl     |Perform                                          |7023[10]                                         |
|00000060|04     |0019F58C|0069C513|Project5.exe|0029C513|Vcl.Controls.pas                     |Vcl.Controls |              |DoControlMsg                                     |10148[12]                                        |
|00000020|04     |0019F5A0|0069CF9B|Project5.exe|0029CF9B|Vcl.Controls.pas                     |Vcl.Controls |TWinControl  |WMCommand                                        |10423[1]                                         |
|00000020|04     |0019F5AC|00736C99|Project5.exe|00336C99|Vcl.Forms.pas                        |Vcl.Forms    |TCustomForm  |WMCommand                                        |6204[6]                                          |
|00000020|04     |0019F5B8|00697805|Project5.exe|00297805|Vcl.Controls.pas                     |Vcl.Controls |TControl     |WndProc                                          |7245[91]                                         |
|00000060|04     |0019F6E4|0069C3AD|Project5.exe|0029C3AD|Vcl.Controls.pas                     |Vcl.Controls |TWinControl  |WndProc                                          |10079[158]                                       |
|00000020|04     |0019F700|00409478|Project5.exe|00009478|System.pas                           |System       |TMonitor     |TryEnter                                         |17939[10]                                        |
|00000020|04     |0019F708|00409000|Project5.exe|00009000|System.pas                           |System       |TMonitor     |Enter                                            |17632[4]                                         |
|00000020|04     |0019F710|0069C3AD|Project5.exe|0029C3AD|Vcl.Controls.pas                     |Vcl.Controls |TWinControl  |WndProc                                          |10079[158]                                       |
|00000020|04     |0019F718|00408EA0|Project5.exe|00008EA0|System.pas                           |System       |TMonitor     |CheckOwningThread                                |17550[2]                                         |
|00000020|04     |0019F720|0040918E|Project5.exe|0000918E|System.pas                           |System       |TMonitor     |Exit                                             |17736[1]                                         |
|00000060|04     |0019F730|00733AEC|Project5.exe|00333AEC|Vcl.Forms.pas                        |Vcl.Forms    |TCustomForm  |WndProc                                          |4427[206]                                        |
|00000020|04     |0019F744|0069B9CC|Project5.exe|0029B9CC|Vcl.Controls.pas                     |Vcl.Controls |TWinControl  |MainWndProc                                      |9786[3]                                          |
|00000020|04     |0019F74C|0069B9E1|Project5.exe|0029B9E1|Vcl.Controls.pas                     |Vcl.Controls |TWinControl  |MainWndProc                                      |9789[6]                                          |
|00000060|04     |0019F75C|0069B9CC|Project5.exe|0029B9CC|Vcl.Controls.pas                     |Vcl.Controls |TWinControl  |MainWndProc                                      |9786[3]                                          |
|00000020|04     |0019F770|0069B9F6|Project5.exe|0029B9F6|Vcl.Controls.pas                     |Vcl.Controls |TWinControl  |MainWndProc                                      |9789[6]                                          |
|00000060|04     |0019F78C|0051F93C|Project5.exe|0011F93C|System.Classes.pas                   |System.Classes|              |StdWndProc                                       |16882[8]                                         |
|00000060|03     |0019F7A4|7453BF19|user32.dll |0003BF19|USER32.dll                           |USER32        |              | (possible AddClipboardFormatListener+1177)      |                                                  |
|00000060|03     |0019F7D0|745383E5|user32.dll |000383E5|USER32.dll                           |USER32        |              | (possible DispatchMessageW+2421)                |                                                  |
|00000020|03     |0019F804|74538436|user32.dll |00038436|USER32.dll                           |USER32        |              | (possible DispatchMessageW+2502)                |                                                  |
|00000020|03     |0019F850|74538239|user32.dll |00038239|USER32.dll                           |USER32        |              | (possible DispatchMessageW+1993)                |                                                  |
|00000020|03     |0019F8A0|74537F85|user32.dll |00037F85|USER32.dll                           |USER32        |              | (possible DispatchMessageW+1301)                |                                                  |
|00000060|03     |0019F8B8|7451BEC5|user32.dll |0001BEC5|USER32.dll                           |USER32        |              | (possible SendMessageW+933)                     |                                                  |
|00000020|03     |0019F910|7453A6EB|user32.dll |0003A6EB|USER32.dll                           |USER32        |              | (possible SystemParametersInfoW+1211)           |                                                  |
|00000060|03     |0019F924|7451BC52|user32.dll |0001BC52|USER32.dll                           |USER32        |              |SendMessageW                                     |                                                  |
|00000060|03     |0019F99C|737897EC|comctl32.dll|000497EC|comctl32.dll                         |comctl32      |              | (possible InitCommonControlsEx+5068)            |                                                  |
|00000020|03     |0019F9CC|7716FA8B|ntdll.dll  |0003FA8B|ntdll.dll                            |ntdll        |              |RtlActivateActivationContextUnsafeFast           |                                                  |
|00000060|03     |0019F9EC|7453BF19|user32.dll |0003BF19|USER32.dll                           |USER32        |              | (possible AddClipboardFormatListener+1177)      |                                                  |
|00000060|03     |0019FA18|745383E5|user32.dll |000383E5|USER32.dll                           |USER32        |              | (possible DispatchMessageW+2421)                |                                                  |
|00000020|03     |0019FA98|74538239|user32.dll |00038239|USER32.dll                           |USER32        |              | (possible DispatchMessageW+1993)                |                                                  |
|00000060|03     |0019FB00|74517AF8|user32.dll |00017AF8|USER32.dll                           |USER32        |              |CallWindowProcW                                  |                                                  |
|00000060|04     |0019FB3C|0069C4BE|Project5.exe|0029C4BE|Vcl.Controls.pas                     |Vcl.Controls |TWinControl  |DefaultHandler                                   |10120[30]                                        |
|00000020|04     |0019FB64|006981C8|Project5.exe|002981C8|Vcl.Controls.pas                     |Vcl.Controls |TControl     |WMLButtonUp                                      |7494[1]                                          |
|00000020|04     |0019FB90|00697805|Project5.exe|00297805|Vcl.Controls.pas                     |Vcl.Controls |TControl     |WndProc                                          |7245[91]                                         |
|00000020|03     |0019FBD8|771B03B7|ntdll.dll  |000803B7|ntdll.dll                            |ntdll        |              | (possible RtlCaptureStackContext+3687)          |                                                  |
|00000020|03     |0019FBF0|77201C64|ntdll.dll  |000D1C64|ntdll.dll                            |ntdll        |              | (possible RtlZeroHeap+1268)                     |                                                  |
|00000020|03     |0019FC4C|74377EF1|msctf.dll  |00057EF1|MSCTF.dll                            |MSCTF        |              | (possible CtfImeCreateInputContext+849)         |                                                  |
|00000020|03     |0019FC60|7437F19E|msctf.dll  |0005F19E|MSCTF.dll                            |MSCTF        |              | (possible TF_SetDefaultRemoteKeyboardLayout+9086)|                                                  |
|00000020|03     |0019FC78|771B03B7|ntdll.dll  |000803B7|ntdll.dll                            |ntdll        |              | (possible RtlCaptureStackContext+3687)          |                                                  |
|00000020|03     |0019FC84|74852ADA|win32u.dll |00002ADA|win32u.dll                           |win32u       |              |NtUserGetThreadState                             |                                                  |
|00000020|03     |0019FC88|7452A170|user32.dll |0002A170|USER32.dll                           |USER32        |              |GetCapture                                       |                                                  |
|00000020|04     |0019FC90|0069BBBB|Project5.exe|0029BBBB|Vcl.Controls.pas                     |Vcl.Controls |TWinControl  |IsControlMouseMsg                                |9842[1]                                          |
|00000020|03     |0019FC94|74F5FB95|combase.dll |0010FB95|combase.dll                          |combase      |              | (possible CoGetApartmentType+309)               |                                                  |
|00000020|03     |0019FCA8|741304BF|oleaut32.dll|000204BF|OLEAUT32.dll                         |OLEAUT32      |              | (possible SysFreeString+239)                    |                                                  |
|00000060|04     |0019FCBC|0069C3AD|Project5.exe|0029C3AD|Vcl.Controls.pas                     |Vcl.Controls |TWinControl  |WndProc                                          |10079[158]                                       |
|00000020|03     |0019FCD0|74130418|oleaut32.dll|00020418|OLEAUT32.dll                         |OLEAUT32      |              |SysFreeString                                    |                                                  |
|00000020|03     |0019FCEC|74377EF1|msctf.dll  |00057EF1|MSCTF.dll                            |MSCTF        |              | (possible CtfImeCreateInputContext+849)         |                                                  |
|00000020|03     |0019FCF4|74377EF9|msctf.dll  |00057EF9|MSCTF.dll                            |MSCTF        |              | (possible CtfImeCreateInputContext+857)         |                                                  |
|00000060|04     |0019FD08|006AEBD8|Project5.exe|002AEBD8|Vcl.StdCtrls.pas                     |Vcl.StdCtrls |TButtonControl|WndProc                                          |5164[13]                                         |
|00000020|04     |0019FD18|0069B9CC|Project5.exe|0029B9CC|Vcl.Controls.pas                     |Vcl.Controls |TWinControl  |MainWndProc                                      |9786[3]                                          |
|00000020|04     |0019FD2C|0069B9F6|Project5.exe|0029B9F6|Vcl.Controls.pas                     |Vcl.Controls |TWinControl  |MainWndProc                                      |9789[6]                                          |
|00000060|04     |0019FD48|0051F93C|Project5.exe|0011F93C|System.Classes.pas                   |System.Classes|              |StdWndProc                                       |16882[8]                                         |
|00000060|03     |0019FD60|7453BF19|user32.dll |0003BF19|USER32.dll                           |USER32        |              | (possible AddClipboardFormatListener+1177)      |                                                  |
|00000060|03     |0019FD8C|745383E5|user32.dll |000383E5|USER32.dll                           |USER32        |              | (possible DispatchMessageW+2421)                |                                                  |
|00000020|03     |0019FDBC|7453FB21|user32.dll |0003FB21|USER32.dll                           |USER32        |              | (possible EndTask+6065)                         |                                                  |
|00000020|03     |0019FDC0|7453A67E|user32.dll |0003A67E|USER32.dll                           |USER32        |              | (possible SystemParametersInfoW+1102)           |                                                  |
|00000020|03     |0019FE0C|74538239|user32.dll |00038239|USER32.dll                           |USER32        |              | (possible DispatchMessageW+1993)                |                                                  |
|00000060|03     |0019FE74|74537C99|user32.dll |00037C99|USER32.dll                           |USER32        |              | (possible DispatchMessageW+553)                 |                                                  |
|00000020|04     |0019FED8|0073E321|Project5.exe|0033E321|Vcl.Forms.pas                        |Vcl.Forms    |TApplication |CancelHint                                       |11181[6]                                         |
|00000060|03     |0019FEF0|74537A7B|user32.dll |00037A7B|USER32.dll                           |USER32        |              |DispatchMessageW                                 |                                                  |
|00000020|04     |0019FEFC|0073CFB3|Project5.exe|0033CFB3|Vcl.Forms.pas                        |Vcl.Forms    |TApplication |ProcessMessage                                   |10352[23]                                        |
|00000020|04     |0019FF18|0073CFF6|Project5.exe|0033CFF6|Vcl.Forms.pas                        |Vcl.Forms    |TApplication |HandleMessage                                    |10382[1]                                         |
|00004020|04     |0019FF3C|0073D329|Project5.exe|0033D329|Vcl.Forms.pas                        |Vcl.Forms    |TApplication |Run                                              |10520[26]                                        |
|00004020|04     |0019FF44|0073D336|Project5.exe|0033D336|Vcl.Forms.pas                        |Vcl.Forms    |TApplication |Run                                              |10520[26]                                        |
|00000030|04     |0019FF50|0073D371|Project5.exe|0033D371|Vcl.Forms.pas                        |Vcl.Forms    |TApplication |Run                                              |10527[33]                                        |
|00004020|04     |0019FF6C|00795049|Project5.exe|00395049|Project5.dpr                         |Project5      |              |Initialization                                   |26[4]                                            |
|7FFF7FFE|03     |0019FF84|758C8492|kernel32.dll|00018492|KERNEL32.DLL                         |KERNEL32      |              |BaseThreadInitThunk                              |                                                  |
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
While this is what we got in the Delphi XE8 debugger,
Code:
Unit10.TForm10.Button1Click($3426BB0)
Vcl.Controls.TControl.Click
Vcl.StdCtrls.TCustomButton.Click
Vcl.StdCtrls.TCustomButton.CNCommand(???)
Vcl.Controls.TControl.WndProc((48401, 2158, 657518, 0, 2158, 0, (), 2158, 10, (), 0, 0, ()))
Vcl.Controls.TWinControl.WndProc((48401, 2158, 657518, 0, 2158, 0, (), 2158, 10, (), 0, 0, ()))
Vcl.StdCtrls.TButtonControl.WndProc((48401, 2158, 657518, 0, 2158, 0, (), 2158, 10, (), 0, 0, ()))
Vcl.Controls.TControl.Perform(???,???,657518)
Vcl.Controls.DoControlMsg(???,(no value))
Vcl.Controls.TWinControl.WMCommand((273, (), 2158, 0, (), 657518, 0))
Vcl.Forms.TCustomForm.WMCommand((273, (), 2158, 0, (), 657518, 0))
Vcl.Controls.TControl.WndProc((273, 2158, 657518, 0, 2158, 0, (), 2158, 10, (), 0, 0, ()))
Vcl.Controls.TWinControl.WndProc((273, 2158, 657518, 0, 2158, 0, (), 2158, 10, (), 0, 0, ()))
Vcl.Forms.TCustomForm.WndProc((273, 2158, 657518, 0, 2158, 0, (), 2158, 10, (), 0, 0, ()))
Vcl.Controls.TWinControl.MainWndProc(???)
System.Classes.StdWndProc(1115926,273,2158,657518)
:7453bf1b ; C:\WINDOWS\SysWOW64\USER32.dll
:745383ea ; C:\WINDOWS\SysWOW64\USER32.dll
:7451beca ; C:\WINDOWS\SysWOW64\USER32.dll
:7451bc57 ; C:\WINDOWS\SysWOW64\USER32.dll
:7375e97f ; C:\WINDOWS\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.17134.706_none_42f0d9a244e0990d\comctl32.dll
:737897f1 ; C:\WINDOWS\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.17134.706_none_42f0d9a244e0990d\comctl32.dll
:7453bf1b ; C:\WINDOWS\SysWOW64\USER32.dll
:745383ea ; C:\WINDOWS\SysWOW64\USER32.dll
:74517afd USER32.CallWindowProcW + 0x8d
Vcl.Controls.TWinControl.DefaultHandler(???)
:0069c4c3 TWinControl.DefaultHandler + $EB
:0069c3b2 TWinControl.WndProc + $5EE
:006aebdd TButtonControl.WndProc + $71
:0051f93e StdWndProc + $16
:7453bf1b ; C:\WINDOWS\SysWOW64\USER32.dll
:745383ea ; C:\WINDOWS\SysWOW64\USER32.dll
:74537c9e ; C:\WINDOWS\SysWOW64\USER32.dll
:74537a80 USER32.DispatchMessageW + 0x10
and that is it, cut at DispatchMessageW which it could be recursive, caused by SendMessage form the application itself, (yes i know it might be was one but i am talking about a second from the message/event)

Hope that clear my point at last, and again sorry for your time.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:07 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