Mi App se cuelga (SOLUCIONADO, bueno eso creo)

Mi App se cuelga (SOLUCIONADO, bueno eso creo)

Postby Armando » Thu Nov 12, 2015 2:19 am

Amigos del foro y Antonio:

Tengo una aplicación y en especial un PRG que después de entrar y salir varias veces a él
la aplicación se cuelga con el famoso error LA APLICACION XXXXX HA DEJADO DE FUNCIONAR
y hay que cerrar el programa.

Deduzco que puede ser que algunos recursos se me quedan sin eliminar.

Cómo puedo saber que recursos se quedan en memoria?

Saludos
Last edited by Armando on Mon Nov 16, 2015 4:32 pm, edited 1 time in total.
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
 
Posts: 3209
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Mi App se cuelga

Postby cnavarro » Thu Nov 12, 2015 7:03 am

Armando, al principio de la aplicacion

Code: Select all  Expand view

   SetResDebug( .T. )
 


y antes de salir

Code: Select all  Expand view


.../...

   if File( "checkres.txt" )
      FErase( "checkres.txt" )
   endif
   CheckRes()

return nil
 
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6541
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Mi App se cuelga

Postby karinha » Thu Nov 12, 2015 11:41 am

Code: Select all  Expand view

FUNCTION FINALIZA()

    DBCLOSEALL()

    FreeResources() // Set Resources To

    Release All
    SysRefresh()

    /*limpia arreglo y llama al colecor de basura de xharbour*/ //-> Lixeira
    HB_GCALL( .T. )

    CLEAR MEMORY

    PostQuitMessage( 0 )

    __QUIT()

RETURN NIL
 


João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7805
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Mi App se cuelga

Postby MarioG » Thu Nov 12, 2015 12:07 pm

Karinha;
muchas gracias por compartir el código!!
en mi EXIT PROCEDURE, luego de CLOSE ALL solo uso SET RESOURCES TO!
Resistencia - "Ciudad de las Esculturas"
Chaco - Argentina
User avatar
MarioG
 
Posts: 1380
Joined: Fri Oct 14, 2005 1:28 pm
Location: Resistencia - Chaco - AR

Re: Mi App se cuelga

Postby hmpaquito » Thu Nov 12, 2015 1:30 pm

Al terminar un programa, es Windows el que recupera la memoria totalmente.
A mi modo de ver el procedimiento de salida solo necesita esto y en este orden:
Code: Select all  Expand view
FUNCTION FINALIZA()
 
    PostQuitMessage( 0 )
    SysRefresh()

    DBCLOSEALL()

    __QUIT()

RETURN NIL
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: Mi App se cuelga

Postby Armando » Thu Nov 12, 2015 2:55 pm

Amigos foreros:

Como decía Jack "El destripador", vamos por partes.

Primero debo aclarar que el problema es en un PRG, no en el PRG Main(), es decir
es en un PRG que forma parte de la aplicación, entro y salgo varias veces de ese PRG
y truena. Otra cosa, utilizo tablas de MySql.

Cristóbal:
Puse el código que sugieres en el PRG del problema y no me crea fichero alguno.
también ya lo puse en el MAIN y tampoco me crea el fichero.

hmpaquito:
Con tu sugerencia al salir del PRG me saca de toda la aplicación, quite las líneas
PostQuitMessage( 0 ) y
__QUIT()

Ya no sale de la aplicación pero el problema persiste.


karinha
Se presenta la misma situación que con la sugerencia de hmpaquito.

Mario:
No puedo usar el SET RESOURCES TO porque tengo una variable de
tipo MEMVAR que también la cierra y al volver a entrar al PRG dicha
variable ya no existe :(

Alguna otra idea?

Saludos
Last edited by Armando on Thu Nov 12, 2015 3:03 pm, edited 2 times in total.
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
 
Posts: 3209
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Mi App se cuelga

Postby armando.lagunas » Thu Nov 12, 2015 2:57 pm

estimados:

Creo que el problema no es en la salida del sistema, si no que se cuelga estando en ejecusión, tube ese problema, yo use el administrador de tareas de windows para revisar el consumo de memoria de mi aplicación, me di cuenta de que esa memoria no se liberaba cuando salía de los procedimientos de cada "prg" que tenía y que al final colapsaba al ir aumentando esos megas en uso de memoria.

la solución a esto fue colocar al comienzo de cada prg el Hb_GCall( .T. ) y al salir de ese prg la instrucción MemoryFlush(), con esto el administrator de tareas de windows me informaba la liberación de esa memoria que ocupaba en ese procedimiento, y mi aplicación se estabilizó, sin darme los problemas de cuelgue y de recursos.

no sé si ésta sea una solución adecuada, pero a mi me funciona hasta el momento.

saludos.
SkyPe: armando.lagunas@hotmail.com
Mail: armando.lagunas@gmail.com
User avatar
armando.lagunas
 
Posts: 346
Joined: Mon Oct 05, 2009 3:35 pm
Location: Curico-Chile

Re: Mi App se cuelga

Postby karinha » Thu Nov 12, 2015 3:03 pm

Armando, muestra como estás haciendo. poste el código fuente. Saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7805
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Mi App se cuelga

Postby Armando » Thu Nov 12, 2015 3:10 pm

Tocayo:

Gracias por el apoyo, uso xHarbour y parece que la función MemoryFlush() no es de xHarbour,
me la reclama el compilador. Tendré que pasarme a Harbour??

Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
 
Posts: 3209
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Mi App se cuelga

Postby Armando » Thu Nov 12, 2015 3:23 pm

karinha

A ver si me explico:

Código del Main()

Code: Select all  Expand view

FUNCTION Main()
...
...
RETURN(.T.)

...
MENUITEM aSubM1[01] PROMPT "&Paileria" ;
    RESOURCE "CotP16" ;
    ACTION SicWin1a(oWindow) ;
    MESSAGE "Registrar e imprimir cotizaciones PAILERIA"
...
RETURN(oMenu)
 


Este código es parte del SicWin1a() PRG, aquí es donde la aplicación se cuelga

Code: Select all  Expand view

MEMVAR oApp
FUNCTION SicWin1a(oWindow)
...
    DEFINE FONT oFont NAME "MS Sans Serif" SIZE 0,-10
    DEFINE ICON oIcono RESOURCE "AppLogo"
    DEFINE WINDOW oWnd MDICHILD OF oWindow FROM 0,0 TO 10,10;
        TITLE "Relación de cotizaciones PAILERIA del mes" ICON oIcono

        oWnd:bGotFocus  = { || oBrw:SetFocus() }

        DEFINE DIALOG oDlg RESOURCE "BrwCpa" OF oWnd FONT oFont ICON oIcono;
            BRUSH oApp:oBrush TRANSPARENT
....
....
...
...
        ACTIVATE DIALOG oDlg NOWAIT ON INIT oDlg:MOVE(0,0) VALID ! GetASyncKey(VK_ESCAPE)
    ACTIVATE WINDOW oWnd ON RESIZE ( IF( oWnd<>NIL, oWnd:SETSIZE(oDlg:nWidth,oDlg:nHeight+29), ));
        ON INIT (LaBarra(oWnd,oDlg,oBrw,oBrx,oBry),oBrw:SetFocus()) VALID Cierra()

    oFont:END()
    oIcono:END()
RETURN (NIL)


STATIC FUNCTION Cierra()
    IF oRsEmp <> NIL
        IF oRsEmp:State() = adStateOpen
            oRsEmp:Close()
        ENDIF
    ENDIF
...
...
   DBCLOSEALL()

//    FreeResources() // Set Resources To

//    Release All
    SysRefresh()

    /*limpia arreglo y llama al colecor de basura de xharbour*/ //-> Lixeira
    HB_GCALL( .T. )

    CLEAR MEMORY

//    PostQuitMessage( 0 )

//    __QUIT()
RETURN(.T.)
 


Si requieres algo más, por favor solo pidelo

Saludos
Last edited by Armando on Thu Nov 12, 2015 3:24 pm, edited 1 time in total.
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
 
Posts: 3209
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Mi App se cuelga

Postby armando.lagunas » Thu Nov 12, 2015 3:23 pm

ups!

Code: Select all  Expand view


FUNCTION MemoryFlush()
    SetProcess( -1, -1, -1 )
RETURN NIL

DLL32 Function SetProcess( hWnd As LONG, nMinWorkingSpace As LONG, nMaxWorkingSpace As LONG ) As LONG PASCAL From "SetProcessWorkingSetSize" Lib "Kernel32.dll"

 


usando el mismo codigo seria asi la solucion

Code: Select all  Expand view

MEMVAR oApp
FUNCTION SicWin1a(oWindow)

HB_GCALL( .t. )    <--- aqui

...
    DEFINE FONT oFont NAME "MS Sans Serif" SIZE 0,-10
    DEFINE ICON oIcono RESOURCE "AppLogo"
    DEFINE WINDOW oWnd MDICHILD OF oWindow FROM 0,0 TO 10,10;
        TITLE "Relación de cotizaciones PAILERIA del mes" ICON oIcono

        oWnd:bGotFocus  = { || oBrw:SetFocus() }

        DEFINE DIALOG oDlg RESOURCE "BrwCpa" OF oWnd FONT oFont ICON oIcono;
            BRUSH oApp:oBrush TRANSPARENT
....
....
...
...
        ACTIVATE DIALOG oDlg NOWAIT ON INIT oDlg:MOVE(0,0) VALID ! GetASyncKey(VK_ESCAPE)
    ACTIVATE WINDOW oWnd ON RESIZE ( IF( oWnd<>NIL, oWnd:SETSIZE(oDlg:nWidth,oDlg:nHeight+29), ));
        ON INIT (LaBarra(oWnd,oDlg,oBrw,oBrx,oBry),oBrw:SetFocus()) VALID Cierra()

    oFont:END()
    oIcono:END()

    memoryflush()   <--- aqui

RETURN (NIL)


 
SkyPe: armando.lagunas@hotmail.com
Mail: armando.lagunas@gmail.com
User avatar
armando.lagunas
 
Posts: 346
Joined: Mon Oct 05, 2009 3:35 pm
Location: Curico-Chile

Re: Mi App se cuelga

Postby karinha » Thu Nov 12, 2015 4:55 pm

Armando tíens un LOOPING WHILE... ENDDO en este codigo?
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7805
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Mi App se cuelga

Postby Armando » Thu Nov 12, 2015 6:08 pm

Tocayo:

En este momento voy de salida, en cuanto regrese pruebo tu sugerencia.



Karihna:

Dentro del código mostrado no hay algún WHILE, existe uno antes del código mostrado,
es cuando abro las tablas y paso una de ellas a dos arrays.

Code: Select all  Expand view

        DO WHILE ! oRsSol:EOF()
            AADD(acSol,oRsSol:Fields("SOL_NOM"):Value)
            AADD(anSol,oRsSol:Fields("SOL_SOL"):Value)
            oRsSol:MoveNext()
        ENDDO
 


He hecho pruebas poniendo flags (msgInfo()) para ver donde se atora y es dentro del dialogo "BrwCpa"
en el que tengo 3 xBrowse, llega el momento en que ya no muestra el dialogo y tira el error

Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
 
Posts: 3209
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Mi App se cuelga

Postby karinha » Thu Nov 12, 2015 7:09 pm

Cambia para:

Code: Select all  Expand view

   WHILE( .NOT. oRsSol:EOF() )

      AADD(acSol,oRsSol:Fields("SOL_NOM"):Value)
      AADD(anSol,oRsSol:Fields("SOL_SOL"):Value)

      oRsSol:MoveNext()

      SYSREFRESH()

   ENDDO
 


Saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7805
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Mi App se cuelga

Postby lucasdebeltran » Sun Nov 15, 2015 4:43 pm

Armando,

¿No te genera un hb_out.log?.
Muchas gracias. Many thanks.

Un saludo, Best regards,

Harbour 3.2.0dev, Borland C++ 5.82 y FWH 13.06 [producción]

Implementando MSVC 2010, FWH64 y ADO.

Abandonando uso xHarbour y SQLRDD.
User avatar
lucasdebeltran
 
Posts: 1303
Joined: Tue Jul 21, 2009 8:12 am

Next

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: wilsongamboa and 55 guests