Arno Garrels wrote:
> h visli wrote:
>> Hi,
>> 
>> Please follow those steps:
>> 1, Run OverbyteIcsThrdSrv.exe in the IDE.
>> 2, Run OverbyteIcsTelnetClient.exe, and connect to the server.
>> 3, Input some words(e.g.: 'help'), and don't press Enter key, then
>> close OverbyteIcsTelnetClient.exe directly. you will get the
>> exception message: "Cannot detach from another thread".
> 
> True, I'm able to reproduce this with latest ICS v7 and D2010
> Thanks for reporting.

It is a simple Deadlock in the demo. 

If there is still data to be displayed in the memo when a Client
disconnects (which is synchronized with TThread.Synchronize) the
WM_QUIT message posted in "TTcpSrvForm.WSocketServer1ClientDisconnect()"
does not kill thread's message pump until 
"WaitForSingleObject(ClientThread.Handle, 10000);" timed out.
As a result the client object has already been freed when
"WSocket.ThreadDetach" is called in method Excecute.
You may get either AVs since a method of an already freed object is 
called or error "Cannot detach from another thread" since property 
TWSocket.ThreadID was reset to "0" in the destructor.

--
Arno Garrels
  

--
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be

Reply via email to