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