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

Reply via email to