Fastream Technologies wrote:
> Are
> you using NOFORMS?

YES.
 
> As you may remember, I am using a main thread for listener and worker
> threads for THttpConnection. THttpCli's are also in it. 

So it's most likely somthing with your thread design.
Try to run my test, takes less that 5 minutes (incl.
porting it to BCB)!

Arno


> This is a reverse
> proxy.
> 
> Regards,
> 
> SZ
> 
> ----- Original Message -----
> From: "Arno Garrels" <[EMAIL PROTECTED]>
> To: "ICS support mailing" <twsocket@elists.org>
> Sent: Sunday, February 05, 2006 1:41 PM
> Subject: Re: [twsocket] Remember the SetWindowLong bug in WSocket?
> 
> 
>> 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" <twsocket@elists.org>
>>> 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" <twsocket@elists.org>
>>>>>> 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
-- 
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

Reply via email to