Hello Jack, > I wonder if you can think of anything that I can hack around > just to see if it'll fix the problem?
I should try some workarounds following to see: - First try to destroy the component same way in a temporary button click. If that's work then I assume it has something to do with the termination of the program. - Then try to destroy the component in another place. I dont know if there is a form or wahtever, but for example in the OnCloseQuery of the main form. - If it all does not help, then try to destroy it from a custom message handler. The message handler can then terminate the application. - Out of ideas :( --- Rgds, Wilfried [TeamICS] http://www.overbyte.be/eng/overbyte/teamics.html http://www.mestdagh.biz Sunday, March 5, 2006, 01:19, Jack wrote: > Hello Wilfried, > It's a little difficult to make a simple project out of it > because the project is kind of complicated already. Maybe I'll > do that when I'm not so busy. > I wonder if you can think of anything that I can hack around > just to see if it'll fix the problem? > -- > Best regards, > Jack > Saturday, March 4, 2006, 11:52:02 AM, you wrote: >> Hello Jack, >>> But it could be SendMessageA called by >> Yes possible. >> Jack can you try to make a simple new project to demonstrate the >> behaviour ? I will be glad to try debug in it. >> Wich delphi version do you use ? >> --- >> Rgds, Wilfried [TeamICS] >> http://www.overbyte.be/eng/overbyte/teamics.html >> http://www.mestdagh.biz >> Saturday, March 4, 2006, 19:54, Jack wrote: >>> Hello Wilfried, >>> It looks like it. But it could be SendMessageA called by >>> WSACleanup, which waits until SendMessageA message is processed. >>> Maybe this is because the target window and winproc has >>> been destroyed by TCustomWSocket.Destroy? >>> -- >>> Best regards, >>> Jack >>> Saturday, March 4, 2006, 10:24:04 AM, you wrote: >>>> Hello Jack, >>>> I'm checking the log again in your first mail: >>>> main thread ($728): >>>> 7c90eb94 +0000 ntdll.dll KiFastSystemCallRet >>>> 77d5f3de +0044 user32.dll SendMessageA >>>> 71ab8cc3 +489b WS2_32.dll WSACleanup >>>> 0048cdc4 +0018 Test.exe WSocket 1789 +2 >>>> WSocket_Synchronized_WSACleanup >>>> 0048d5d9 +0035 Test.exe WSocket 2221 +12 WSocketUnloadWinsock >>>> 0048e2d7 +007f Test.exe WSocket 3507 +16 TCustomWSocket.Destroy >>>> 00493877 +0037 Test.exe WSocket 6378 +6 >>>> TCustomLineWSocket.Destroy >>>> 00494c0e +0092 Test.exe WSocketS 278 +15 >>>> TCustomWSocketServer.Destroy >>>> 00402e60 +0008 Test.exe System TObject.Free >>>> 00454be4 +0008 Test.exe SysUtils FreeAndNil >>>> 0049e2ad +0031 Test.exe fTest 213 +5 TFrmTest.CleanUp >>>> 0049e148 +004c Test.exe fTest 133 +15 TFrmTest.FormClose >>>> It seems that all is destroyed and that there is something 'hanging' in >>>> ntdll.dll. Is this right conclusion because I dont know the MadExcept ? >>>> --- >>>> Rgds, Wilfried [TeamICS] >>>> http://www.overbyte.be/eng/overbyte/teamics.html >>>> http://www.mestdagh.biz >>>> Saturday, March 4, 2006, 18:31, Jack wrote: >>>>> Hello Wilfried, >>>>> Thanks for the quick reply. No, I don't have a OnSessionClose or >>>>> OnChangeState handler. Destroying the server object will abort the >>>>> socket? Anyway, I also removed Abort() but the problem is still >>>>> happening from time to time as before. >>>>> -- >>>>> Best regards, >>>>> Jack >>>>> Saturday, March 4, 2006, 1:21:05 AM, you wrote: >>>>>> Hello Jack, >>>>>> I read your mail better now :) No need for Abort. Just Free the >>>>>> component. Then OnSessionClose will not fire. What will fire is >>>>>> OnChangeState, so be aware if you do things there like updating GUI or >>>>>> so. >>>>>> --- >>>>>> Rgds, Wilfried [TeamICS] >>>>>> http://www.overbyte.be/eng/overbyte/teamics.html >>>>>> http://www.mestdagh.biz >>>>>> Saturday, March 4, 2006, 09:33, Jack wrote: >>>>>>> My application halts when WSocketServer is freed, not every time >>>>>>> though. But it happens once in a few times when the application is >>>>>>> closed. Here's the code snippet: >>>>>>> if WSocketServer <> nil then >>>>>>> begin >>>>>>> WSocketServer.Abort(); >>>>>>> Log('Server closed'); >>>>>>> FreeAndNil(WSocketServer); >>>>>>> Log('Server freed'); >>>>>>> end; >>>>>>> When this happens, the last message I get is 'Server closed' so >>>>>>> it dies in FreeAndNil(WSocketServer); Log() just add a line in >>>>>>> a TMemo. They were added after this problem was seen. >>>>>>> I enabled "Check for frozen main thread" in madexcept and got >>>>>>> this report: >>>>>>> main thread ($728): >>>>>>> 7c90eb94 +0000 ntdll.dll KiFastSystemCallRet >>>>>>> 77d5f3de +0044 user32.dll SendMessageA >>>>>>> 71ab8cc3 +489b WS2_32.dll WSACleanup >>>>>>> 0048cdc4 +0018 Test.exe WSocket 1789 +2 >>>>>>> WSocket_Synchronized_WSACleanup >>>>>>> 0048d5d9 +0035 Test.exe WSocket 2221 +12 WSocketUnloadWinsock >>>>>>> 0048e2d7 +007f Test.exe WSocket 3507 +16 TCustomWSocket.Destroy >>>>>>> 00493877 +0037 Test.exe WSocket 6378 +6 >>>>>>> TCustomLineWSocket.Destroy >>>>>>> 00494c0e +0092 Test.exe WSocketS 278 +15 >>>>>>> TCustomWSocketServer.Destroy >>>>>>> 00402e60 +0008 Test.exe System TObject.Free >>>>>>> 00454be4 +0008 Test.exe SysUtils FreeAndNil >>>>>>> 0049e2ad +0031 Test.exe fTest 213 +5 TFrmTest.CleanUp >>>>>>> 0049e148 +004c Test.exe fTest 133 +15 TFrmTest.FormClose >>>>>>> disassembling: >>>>>>> [...] >>>>>>> 0048cdac 1787 cmp dword ptr [$4a5a14], 0 >>>>>>> 0048cdb3 jnz loc_48cdc4 >>>>>>> 0048cdb5 1788 mov eax, $48cdd4 ; 'WSACleanup' >>>>>>> 0048cdba call +$979 ($48d738) ; WSocket.WSocketGetProc >>>>>>> 0048cdbf mov [$4a5a14], eax >>>>>>> 0048cdc4 1789 = call dword ptr [$4a5a14] ; >>>>>>> 0048cdc4 1789 WSACleanup (WS2_32.dll) >>>>>>> 0048cdca 1790 ret >>>>>>> Anything I'm doing wrong? -- 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