FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Error en Thread de Harbour
Posts: 144
Joined: Sun Dec 18, 2005 03:18 PM
Error en Thread de Harbour
Posted: Fri Aug 13, 2010 01:14 PM
Alguien me puede dar información sobre este error, se produce aleatoria mente cuando la aplicación lleva rato funcionando.
Code (fw): Select all Collapse
Application
===========
   Path and name: C:\Mensajes\Mensajeria.exe (32 bits)
   Size: 1,707,520 bytes
   Time from start: 0 hours 40 mins 0 secs 
   Error occurred at: 13/08/10, 13:47:04
   Error description: Error BASE/1301  Object destructor failure: Reference to freed block

Stack Calls
===========

System
======
   CPU type: Pentium(R) Dual-Core  CPU      E5200  @ 2.50GHz 2500 Mhz
   Hardware memory: 2040 megs

   Free System resources: 90 %
        GDI    resources: 90 %
        User   resources: 90 %

   Compiler version: Harbour 2.0.0 (Rev. 13372)
   Windows version: 5.1, Build 2600 Service Pack 3

   Windows total applications running: 0

Variables in use
================
   Procedure     Type   Value
   ==========================

Linked RDDs
===========

DataBases in use
================

Classes in use:
===============
     1 ERROR
     2 HBCLASS
     3 HBDEBUGGER
     4 HBDBMENU
     5 HBDBMENUITEM
     6 HBDBWINDOW
     7 HBDBINPUT
     8 HBDBBROWSER
     9 HBDBCOLUMN
    10 HBOBJECT
    11 TAPP
    12 TWINDOW
    13 TBRUSH
    14 TFONT
    15 TXMLDOCUMENT
    16 TXMLNODE
    17 TXMLITERATOR
    18 TXMLITERATORSCAN
    19 WIN_OLEAUTO
    20 TOLEAUTO
    21 TTIMER
    22 TSOCKET
    23 TSERVER
    24 TREG32
    25 TSTRUCT

Memory Analysis
===============
      192 Static variables

   Dynamic memory consume:
      Actual  Value:          0 bytes
      Highest Value:          0 bytes



Gracias de antemano
Saludos

Salvador
Posts: 731
Joined: Fri Oct 07, 2005 07:42 AM
Re: Error en Thread de Harbour
Posted: Fri Aug 13, 2010 02:40 PM

Mi curiosidad me fuerza a preguntarte :
¿ Usas FWH con threads ?
Hasta donde yo sé, eso no es posible, o puede ocasionarte problemas.
O, ¿ quizás sea posible usar los threads de harbour, sin salida a pantallla , pero FWH ?
¿ Antonio un poquito de luz ?

Saludos

Rafa Carmona ( rafa.thefullARROBAgmail.com___quitalineas__)
Posts: 144
Joined: Sun Dec 18, 2005 03:18 PM
Re: Error en Thread de Harbour
Posted: Fri Aug 13, 2010 10:31 PM
Es un servidor que recibe datos de clientes que se conectan a través de un socket. Solo tiene una window oculta y corre como servicio.
Se inicia el servido así.
Code (fw): Select all Collapse
METHOD StartServer() CLASS Tapp
::oSockGps    := TSocket():New( ::nPuertoGps  )
::oSockGps:bAccept := { || hb_threadStart( @NuevoCliente(), Self )  }  
Return  nil

PROCEDURE NuevoCliente( oApp )
local oGps
if oApp:nActClients < MAX_CONNECTIONS
    oGps := Tserver():New( TSocket():Accept( oApp:oSockGps:nSocket ), oApp )
    oGps:Start()
    
    //espera que el cliente finalice la conexion
    do while !oGps:lKill
        threadsleep(1000) 
    enddo
    oGps := nil
    hb_gcall(.t.)
endif

return


El thread espera que el cliente finalice la conexión para liberar la memoria, cada cliente que se conecta maneja varios objetos de Ado contra SQL y un timeout de conexión.
Este invento funciona correctamente con hasta 100 clientes conectados simultáneamente, de hecho lleva varios meses funcionando con una concurrencia de unos 70 sin problemas. Si el número de conexiones aumenta de 100, me salta aleatoriamente el error que comento.
Quizás esté equivocado en el planteamiento y debería reprogramarlo sin utilizar el GUI de FWH. Pero pruebas que realicé con las funciones Inet y el MT de Harbour , no conseguí hacerlo funcionar.
En estos foros al parecer hay poca información o experiencias sobre el MT.

Toda sugerencia será apreciada.
Saludos

Salvador
Posts: 731
Joined: Fri Oct 07, 2005 07:42 AM
Re: Error en Thread de Harbour
Posted: Wed Aug 18, 2010 01:00 PM

Salvador, yo dejé por aquí un concepto de re indexar multihilo, quizás te sirva, era sin FW y funcionaba 100%. Eso si, es mejor indexar sin hilos, porque el disco duro penaliza , Y MUCHO.
Si no usas dbfs, por tema de poner/quit alias de la dbf en cuestión, yo las pruebas que hice iba muy bien.

Lo que no me atrevo es meter FW por medio...

Saludos

Rafa Carmona ( rafa.thefullARROBAgmail.com___quitalineas__)

Continue the discussion