Fastream Technologies wrote:
> I agree with you in your both emails BUT emprically it works in the way I
> wrote. Try creating and destroying 1000 httpclients with NOFORMS and you
> will see that you will be wasting more than 20MB of RAM!!
I cannot reproduce that. What am I doing wrong?
20 MB should become visible in taskmanager, correct?
Here my test:
procedure TForm1.Button1Click(Sender: TObject);
var
L : TList;
H : THttpcli;
I : Integer;
begin
L := TList.Create;
try
for I := 1 to 1000 do
begin
H := THttpCli.Create(nil);
L.Add(H);
PostMessage(H.Handle, WM_USER + 1, 0, 0);
end;
Sleep(1000);
for I := 0 to L.Count -1 do
begin
THttpCli(L[I]).Free;
L[I] := nil;
end;
finally
L.Free;
L := nil;
end;
end;
Arno
>
> Regards,
>
> SZ
>
> ----- Original Message -----
> From: "Arno Garrels" <[EMAIL PROTECTED]>
> To: "ICS support mailing" <[email protected]>
> Sent: Saturday, February 04, 2006 5:38 PM
> Subject: Re: [twsocket] Remember the SetWindowLong bug in WSocket?
>
>
>> BTW: Also this returns TRUE for both windows:
>>
>> function XSocketDeallocateHWnd(Wnd: HWND): boolean;
>> begin
>> Result := (SetWindowLong(Wnd, 0, 0) <> 0) and DestroyWindow(Wnd);
>> end;
>>
>>
>> Arno Garrels wrote:
>>> Fastream Technologies wrote:
>>>> I found the ICS bug: when I put the below in the ThttpCli descendent's
>>>> destructor, it works:
>>>>
>>>> SetWindowLong(FWindowHandle, 0, 0);
>>>> DestroyWindow(FWindowHandle);
>>>> SetWindowLong(FCtrlSocket->Handle, 0, 0);
>>>> DestroyWindow(FCtrlSocket->Handle);
>>>>
>>>> In THttpCli destructor, the destruction order of the CTrlSocket is
>>>> first so I think that's why it leaks the window. And no,
>>>> CodeGuard/Memproof/Eurekalog cannot show undeleted windows.
>>>
>>> In WSocket.pas, XSocketDeallocateHWnd, there should be a call to
>>> SetWindowLong().
>>>
>>> function XSocketDeallocateHWnd(Wnd: HWND): boolean;
>>> begin
>>> SetWindowLong(Wnd, 0, 0); { Clear the object reference }
>>> Result := DestroyWindow(Wnd);
>>> end;
>>>
>>> If not, make sure that you have latest ICS-Beta installed (not
>>> sure if it is in the release). I've my doubts that order of
>>> destroying the windows matters, but not 100% sure.
>>>
>>> ---
>>> Arno Garrels [TeamICS]
>>> http://www.overbyte.be/eng/overbyte/teamics.html
>>>
>>>
>>>> Best Regards,
>>>>
>>>> SZ
>>>>
>>>> ----- Original Message -----
>>>> From: "Arno Garrels" <[EMAIL PROTECTED]>
>>>> To: "ICS support mailing" <[email protected]>
>>>> Sent: Saturday, February 04, 2006 1:28 PM
>>>> Subject: Re: [twsocket] Remember the SetWindowLong bug in WSocket?
>>>>
>>>>
>>>>> Fastream Technologies wrote:
>>>>>> Hello,
>>>>>>
>>>>>> That bug caused a lot of frustration here. Now the problem is
>>>>>> resolved for
>>>>>> FTP and web servers with my fix BUT for the reverse proxy, there is a
>>>>>> window leakage that cannot be detected by CodeGuard. It seems the
>>>>>> problem is in THttpCli destructor. XWindowDealloc returns true but I
>>>>>> have BIG doubts. It is a bit confusing because in THttpCli there are
>>>>>> two handles and two windows! One is for the THttpCli and the other
>>>>>> one is for THttpCli->CtrlSocket. Could someone take a look? It leaks
>>>>>> 40KB per socket!!!
>>>>>
>>>>> Have you cross-checked one of the THttpCli demo projects?
>>>>> Here MemProof says "No leak found" (beside 1x 4k in MakeObjectInstance
>>>>> which
>>>>> is normal..).
>>>>>
>>>>> ---
>>>>> Arno Garrels [TeamICS]
>>>>> http://www.overbyte.be/eng/overbyte/teamics.html
>>>>>
>>>>>
>>>>>>
>>>>>> Best Regards,
>>>>>>
>>>>>> SZ
>>>>> --
>>>>> To unsubscribe or change your settings for TWSocket mailing list
>>>>> please goto http://www.elists.org/mailman/listinfo/twsocket
>>>>> Visit our website at http://www.overbyte.be
>> --
>> To unsubscribe or change your settings for TWSocket mailing list
>> please goto http://www.elists.org/mailman/listinfo/twsocket
>> Visit our website at http://www.overbyte.be
--
To unsubscribe or change your settings for TWSocket mailing list
please goto http://www.elists.org/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be