![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
#2
|
|||
|
|||
|
TJvTimer no libera el thread
Hola amigos.
En un programa que actua como servidor tcp usando TServerSocket con Delphi 7 lo que hago es lo siguiente. Cuando alguien se conecta al puerto se dispara el evento OnConnect del socket, alli creo una instancia de una clase derivada de TJvTimer a la que le asigno el socket que se acaba de conectar y si al cabo de 1 segundo no recibo en el evento read del socket la firma del cliente se dispara el evento OnTimer y hace un close del socket y el free de la clase. Viene funcionando varios dias pero en un momento que puede ser despues de 1 semana o algunas horas, ningun cliente se puede conectar y mirando el taskmanager se puede ver que se empiezan a incrementar las hebras del programa hasta que termina reventando. El MadException me tira una chirrera de este bloque: thread $1fe70 (TJvTimerThread): <priority:2> 7c82860c ntdll.dll KiFastSystemCallRet 7c827d27 ntdll.dll NtWaitForSingleObject 77e31d18 kernel32.dll WaitForSingleObjectEx 77e31c88 kernel32.dll WaitForSingleObject 0044e7b4 acdsrv.exe Classes TThread.WaitFor 0044e3ed acdsrv.exe Classes TThread.Destroy 005d495a acdsrv.exe JvTimer TJvTimerThread.Destroy 004046f0 acdsrv.exe System TObject.Free 005d4ba6 acdsrv.exe JvTimer TJvTimer.Destroy 004046f0 acdsrv.exe System TObject.Free 006496b6 acdsrv.exe Main 1183 TNewSocket.TimerEvent 005d4dd6 acdsrv.exe JvTimer TJvTimer.Timer 005d4a4c acdsrv.exe JvTimer TJvTimerThread.Execute 0042ad06 acdsrv.exe madExcept HookedTThreadExecute 0044e27c acdsrv.exe Classes ThreadProc 004055dc acdsrv.exe System ThreadWrapper 0042ac9b acdsrv.exe madExcept ThreadExceptFrame >> created by main thread ($1f91c) at: 005d48b9 acdsrv.exe JvTimer TJvTimerThread.Create Se puede ver que no se estan liberando los threads. No tengo idea de cual es el disparador pero justo cuando no se pueden conectar es que se ve que empiezan acrecer los threads. Puede ser que por algun motivo se esten perdiendo mensajes de la cola de mensajes? Alguien tiene alguna idea. Los sockets son non blocking y pasa tanto en windows Server 2003 como 2008. Gracias. |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Microsoft libera ASP .NET MVC | AzidRain | Noticias | 3 | 10-04-2009 19:06:52 |
| Form no libera de memoria | Paulao | Varios | 1 | 03-03-2009 17:24:48 |
| Red Hat libera RHN y nace spacewalk | poliburro | Noticias | 0 | 03-07-2008 20:42:52 |
| Thread bendito thread...se me pierde la ventana | Seba.F1 | API de Windows | 5 | 02-02-2006 00:16:30 |
| No libera la MEMORIA | pruz | Varios | 1 | 27-04-2004 21:30:33 |
|