Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Colaboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #2  
Antiguo 04-01-2013
jars jars is offline
Miembro
 
Registrado: mar 2004
Posts: 283
Poder: 23
jars Va por buen camino
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.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

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


La franja horaria es GMT +2. Ahora son las 10:38:51.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi