Not sure. I am also doing thread De/Atach'ing. Perhaps that confuses? Are you using NOFORMS?
As you may remember, I am using a main thread for listener and worker threads for THttpConnection. THttpCli's are also in it. 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