Error Irrecuperable 9009 ( Solucion en 32bits )
-
- Posts: 176
- Joined: Thu Sep 17, 2015 11:40 pm
- Location: Chincha - Peru
- Contact:
Error Irrecuperable 9009 ( Solucion en 32bits )
Saludos estoy trabajando con unas tablas de 131884 registro llega un momento de haber realizado el proceso en 18793 registro q sale este error
hb_xrealloc no puede reubicar la memoria
alguna sugerencia para evitarlo . Gracias
hb_xrealloc no puede reubicar la memoria
alguna sugerencia para evitarlo . Gracias
Last edited by CARLOS ATUNCAR on Tue Jun 04, 2024 4:19 am, edited 1 time in total.
- Antonio Linares
- Site Admin
- Posts: 42273
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: Error Irrecuperable 9009
Estás usando Harbour ó xHarbour ?
Que versión ?
Que versión ?
Re: Error Irrecuperable 9009
En windows 10 / 11 minimo: 8 Gbs de RAM.
https://forums.fivetechsupport.com/view ... 5f#p268853
ò muestre el código.
Regards, saludos.
https://forums.fivetechsupport.com/view ... 5f#p268853
ò muestre el código.
Regards, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
-
- Posts: 176
- Joined: Thu Sep 17, 2015 11:40 pm
- Location: Chincha - Peru
- Contact:
Re: Error Irrecuperable 9009
Windows 10
xHarbour 1.3.0 Intl. (SimpLex) (Build 20230914)
RAM 16
WaitOn("Espere, recogiendo informacion...",@oWait )
FWCONNECT lServer HOST cServer ;
USER cUser ;
PASSWORD cPassword ;
DATABASE cDBName
CheckConect()
cMsg := "SELECT * FROM personal_mov p WHERE fecha='2030-03-04'"// LIMIT 2000"
cQry := aServer:Query( cMsg )
nnc := 1
While !cQry:Eof()
oWait:Say(1,3,"Espere, actualizando Reg.: "+Alltrim( Str( cQry:id ) )+" -- "+Alltrim(Str(nnc))+Space(40) )
SysRefresh()
cMsg := "SELECT * FROM personal_mov WHERE id = "+ClipValue2Sql( cQry:id )
aQry := lServer:Query( cMsg )
If aQry:lastrec()>0
oWait:Say(1,3,"Espere, actualizando Reg.: "+Alltrim( Str( cQry:id ) )+" -- "+Alltrim(Str(nnc))+" ok..."+Space(30) )
SysRefresh()
cMsg := "update personal_mov set "
cMsg += "idasistencia = "+ClipValue2Sql( aQry:idasistencia )
cMsg += ",idempresa = "+ClipValue2Sql( aQry:idempresa )
cMsg += ",idfundo = "+ClipValue2Sql( aQry:idfundo )
cMsg += ",campana = "+ClipValue2Sql( aQry:campana )
cMsg += ",semana = "+ClipValue2Sql( aQry:semana )
cMsg += ",tipo = "+ClipValue2Sql( aQry:tipo )
cMsg += ",idpersonal = "+ClipValue2Sql( aQry:idpersonal )
cMsg += ",fecha = "+ClipValue2Sql( aQry:fecha )
cMsg += ",idparcela = "+ClipValue2Sql( aQry:idparcela )
cMsg += ",idlote = "+ClipValue2Sql( aQry:idlote )
cMsg += ",idlabor = "+ClipValue2Sql( aQry:idlabor )+" "
cMsg += "WHERE id="+ClipValue2Sql( aQry:id )
aServer:Execute( cMsg )
EndIf
aQry:End()
cQry:Skip()
nnc++
EndDo
cQry:End()
lServer:End()
xHarbour 1.3.0 Intl. (SimpLex) (Build 20230914)
RAM 16
WaitOn("Espere, recogiendo informacion...",@oWait )
FWCONNECT lServer HOST cServer ;
USER cUser ;
PASSWORD cPassword ;
DATABASE cDBName
CheckConect()
cMsg := "SELECT * FROM personal_mov p WHERE fecha='2030-03-04'"// LIMIT 2000"
cQry := aServer:Query( cMsg )
nnc := 1
While !cQry:Eof()
oWait:Say(1,3,"Espere, actualizando Reg.: "+Alltrim( Str( cQry:id ) )+" -- "+Alltrim(Str(nnc))+Space(40) )
SysRefresh()
cMsg := "SELECT * FROM personal_mov WHERE id = "+ClipValue2Sql( cQry:id )
aQry := lServer:Query( cMsg )
If aQry:lastrec()>0
oWait:Say(1,3,"Espere, actualizando Reg.: "+Alltrim( Str( cQry:id ) )+" -- "+Alltrim(Str(nnc))+" ok..."+Space(30) )
SysRefresh()
cMsg := "update personal_mov set "
cMsg += "idasistencia = "+ClipValue2Sql( aQry:idasistencia )
cMsg += ",idempresa = "+ClipValue2Sql( aQry:idempresa )
cMsg += ",idfundo = "+ClipValue2Sql( aQry:idfundo )
cMsg += ",campana = "+ClipValue2Sql( aQry:campana )
cMsg += ",semana = "+ClipValue2Sql( aQry:semana )
cMsg += ",tipo = "+ClipValue2Sql( aQry:tipo )
cMsg += ",idpersonal = "+ClipValue2Sql( aQry:idpersonal )
cMsg += ",fecha = "+ClipValue2Sql( aQry:fecha )
cMsg += ",idparcela = "+ClipValue2Sql( aQry:idparcela )
cMsg += ",idlote = "+ClipValue2Sql( aQry:idlote )
cMsg += ",idlabor = "+ClipValue2Sql( aQry:idlabor )+" "
cMsg += "WHERE id="+ClipValue2Sql( aQry:id )
aServer:Execute( cMsg )
EndIf
aQry:End()
cQry:Skip()
nnc++
EndDo
cQry:End()
lServer:End()
Re: Error Irrecuperable 9009
https://forums.fivetechsupport.com/view ... 5f#p269473
Carlos: Prueba y comente, pls.
Regards, saludos.
Carlos: Prueba y comente, pls.
Code: Select all | Expand
FUNCTION ATUAL_REG()
HB_GCALL( .F. )
WaitOn( "Espere, recogiendo informacion...", @oWait )
FWCONNECT lServer HOST cServer ;
USER cUser ;
PASSWORD cPassword ;
DATABASE cDBName
CheckConect()
cMsg := "SELECT * FROM personal_mov p WHERE fecha='2030-03-04'"// LIMIT 2000"
cQry := aServer:Query( cMsg )
nnc := 1
WHILE .NOT. cQry:Eof()
SYSREFRESH()
SYSWAIT( 3.5 ) // Delay aqui.
HB_GCALL( .F. )
oWait:Say( 1, 3, "Espere, actualizando Reg.: " + AllTrim( Str( cQry:id ) ) + " -- " + AllTrim( Str( nnc ) ) + Space( 40 ) )
cMsg := "SELECT * FROM personal_mov WHERE id = " + ClipValue2Sql( cQry:id )
aQry := lServer:Query( cMsg )
IF aQry:LastRec() > 0
oWait:Say( 1, 3, "Espere, actualizando Reg.: " + AllTrim( Str( cQry:id ) ) + " -- " + AllTrim( Str( nnc ) ) + " ok..." + Space( 30 ) )
// SysRefresh()
cMsg := "update personal_mov set "
cMsg += "idasistencia = " + ClipValue2Sql( aQry:idasistencia )
cMsg += ",idempresa = " + ClipValue2Sql( aQry:idempresa )
cMsg += ",idfundo = " + ClipValue2Sql( aQry:idfundo )
cMsg += ",campana = " + ClipValue2Sql( aQry:campana )
cMsg += ",semana = " + ClipValue2Sql( aQry:semana )
cMsg += ",tipo = " + ClipValue2Sql( aQry:tipo )
cMsg += ",idpersonal = " + ClipValue2Sql( aQry:idpersonal )
cMsg += ",fecha = " + ClipValue2Sql( aQry:fecha )
cMsg += ",idparcela = " + ClipValue2Sql( aQry:idparcela )
cMsg += ",idlote = " + ClipValue2Sql( aQry:idlote )
cMsg += ",idlabor = " + ClipValue2Sql( aQry:idlabor ) + " "
cMsg += "WHERE id=" + ClipValue2Sql( aQry:id )
aServer:Execute( cMsg )
ENDIF
aQry:End() // ESTO ESTA CORRECTO?
cQry:Skip()
nnc++
ENDDO
HB_GCALL( .T. )
cQry:End()
lServer:End() // lSerVer := NIL ??
RETURN NIL
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
-
- Posts: 176
- Joined: Thu Sep 17, 2015 11:40 pm
- Location: Chincha - Peru
- Contact:
Re: Error Irrecuperable 9009
ok voy hacer las pruebas tus punto de observación si lo que pasa q estoy reparando informacion en la nube con una base local, pruebo _ y aviso
-
- Posts: 176
- Joined: Thu Sep 17, 2015 11:40 pm
- Location: Chincha - Peru
- Contact:
Re: Error Irrecuperable 9009
Estoy corriendo lo planteado :
ya el consumo de memoria se a quedado en 61.4mb anterior mente se incrementaba según los registro leidos llego hasta 1899Mb ahora esta 61.5Mb pero lo que aumentado es el uso de CPU antes solo 0.6% ahora esta 12.3%
y el tiempo de se demora mas en avanzar con los registro SYSWAIT( 3.5 ) se le puede poner menos en este parametro ?
ya el consumo de memoria se a quedado en 61.4mb anterior mente se incrementaba según los registro leidos llego hasta 1899Mb ahora esta 61.5Mb pero lo que aumentado es el uso de CPU antes solo 0.6% ahora esta 12.3%
y el tiempo de se demora mas en avanzar con los registro SYSWAIT( 3.5 ) se le puede poner menos en este parametro ?
-
- Posts: 176
- Joined: Thu Sep 17, 2015 11:40 pm
- Location: Chincha - Peru
- Contact:
Re: Error Irrecuperable 9009
he modificado SYSWAIT( 0.5 ) esta más rapido el proceso el consumo de memoria sigue estable en 61.5mb y el uso CPU entre 10.5%
Re: Error Irrecuperable 9009
Carlos: Prueba y comente, pls. Nueva version:
Regards, saludos.
Code: Select all | Expand
FUNCTION ATUAL_REG()
HB_GCALL( .F. )
WaitOn( "Espere, recogiendo informacion...", @oWait )
FWCONNECT lServer HOST cServer ;
USER cUser ;
PASSWORD cPassword ;
DATABASE cDBName
CheckConect()
cMsg := "SELECT * FROM personal_mov p WHERE fecha='2030-03-04'"// LIMIT 2000"
cQry := aServer:Query( cMsg )
nnc := 1
WHILE .NOT. cQry:Eof()
SYSREFRESH()
SYSWAIT( 0.5 ) // Delay aqui.
HB_GCALL( .F. ) // Puede tambien: HB_GCALL()
IF LASTKEY() = VK_ESCAPE
IF MsgNoYes( OemToAnsi( "Atención al usuario: " ) + CRLF + ;
+ CRLF + ;
OemToAnsi( "Escribiste <ESCAPE> " ) + CRLF + ;
OemToAnsi( "Tienes problemas " ) + CRLF + ;
OemToAnsi( "¿en la actualización? " ) + CRLF + ;
+ CRLF + ;
OemToAnsi( "¿Realmente quieres salir? " ) + CRLF + ;
OemToAnsi( "Escribe todo..." ) + CRLF + ;
+ CRLF + ;
OemToAnsi( "<S> Estoy continuando... " ) + CRLF + ;
OemToAnsi( "<N>o Continue(Salir) " ), ;
OemToAnsi( "¿Problemas con el programa?" ) ) = .F.
// comando...
RETURN( .F. )
ENDIF
ENDIF
oWait:Say( 1, 3, "Espere, actualizando Reg.: " + AllTrim( Str( cQry:id ) ) + " -- " + AllTrim( Str( nnc ) ) + Space( 40 ) )
cMsg := "SELECT * FROM personal_mov WHERE id = " + ClipValue2Sql( cQry:id )
aQry := lServer:Query( cMsg )
IF aQry:LastRec() > 0
oWait:Say( 1, 3, "Espere, actualizando Reg.: " + AllTrim( Str( cQry:id ) ) + " -- " + AllTrim( Str( nnc ) ) + " ok..." + Space( 30 ) )
// SysRefresh()
cMsg := "update personal_mov set "
cMsg += "idasistencia = " + ClipValue2Sql( aQry:idasistencia )
cMsg += ",idempresa = " + ClipValue2Sql( aQry:idempresa )
cMsg += ",idfundo = " + ClipValue2Sql( aQry:idfundo )
cMsg += ",campana = " + ClipValue2Sql( aQry:campana )
cMsg += ",semana = " + ClipValue2Sql( aQry:semana )
cMsg += ",tipo = " + ClipValue2Sql( aQry:tipo )
cMsg += ",idpersonal = " + ClipValue2Sql( aQry:idpersonal )
cMsg += ",fecha = " + ClipValue2Sql( aQry:fecha )
cMsg += ",idparcela = " + ClipValue2Sql( aQry:idparcela )
cMsg += ",idlote = " + ClipValue2Sql( aQry:idlote )
cMsg += ",idlabor = " + ClipValue2Sql( aQry:idlabor ) + " "
cMsg += "WHERE id=" + ClipValue2Sql( aQry:id )
aServer:Execute( cMsg )
ENDIF
aQry:End() // ESTO ESTA CORRECTO?
cQry:Skip()
nnc++
ENDDO
HB_GCALL( .T. )
cQry:End()
lServer:End() // lSerVer := NIL ??
RETURN NIL
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
-
- Posts: 176
- Joined: Thu Sep 17, 2015 11:40 pm
- Location: Chincha - Peru
- Contact:
Re: Error Irrecuperable 9009 ( Solucionado )
Si Gracias lo solucione asi cada 1000 registros
WaitOn("Espere, recogiendo informacion...",@oWait )
HB_GCALL( .F. )
FWCONNECT lServer HOST cServer ;
USER cUser ;
PASSWORD cPassword ;
DATABASE cDBName
CheckConect()
cMsg := "SELECT * FROM personal_mov p WHERE fecha='2030-03-04'"// LIMIT 2000"
cQry := aServer:Query( cMsg )
nnc := 1
xnn := 0
While !cQry:Eof()
oWait:Say(1,3,"Espere, actualizando Reg.: "+Alltrim( Str( cQry:id ) )+" -- "+Alltrim(Str(nnc))+Space(40) )
SysRefresh()
// si ha recorrido 1000 registro de limpie la memoria
If xnn>1000
SYSWAIT( 0.5 )
HB_GCALL( .F. )
xnn:=0
Endif
cMsg := "SELECT * FROM personal_mov WHERE id = "+ClipValue2Sql( cQry:id )
aQry := lServer:Query( cMsg )
If aQry:lastrec()>0
oWait:Say(1,3,"Espere, actualizando Reg.: "+Alltrim( Str( cQry:id ) )+" -- "+Alltrim(Str(nnc))+" ok..."+Space(30) )
SysRefresh()
cMsg := "update personal_mov set "
cMsg += "idasistencia = "+ClipValue2Sql( aQry:idasistencia )
cMsg += ",idempresa = "+ClipValue2Sql( aQry:idempresa )
cMsg += ",idfundo = "+ClipValue2Sql( aQry:idfundo )
cMsg += ",campana = "+ClipValue2Sql( aQry:campana )
cMsg += ",semana = "+ClipValue2Sql( aQry:semana )
cMsg += ",tipo = "+ClipValue2Sql( aQry:tipo )
cMsg += ",idpersonal = "+ClipValue2Sql( aQry:idpersonal )
cMsg += ",fecha = "+ClipValue2Sql( aQry:fecha )
cMsg += ",idparcela = "+ClipValue2Sql( aQry:idparcela )
cMsg += ",idlote = "+ClipValue2Sql( aQry:idlote )
cMsg += ",idlabor = "+ClipValue2Sql( aQry:idlabor )+" "
cMsg += "WHERE id="+ClipValue2Sql( aQry:id )
aServer:Execute( cMsg )
EndIf
aQry:End()
cQry:Skip()
nnc++
xnn++
EndDo
cQry:End()
lServer:End()
WaitOff( @oWait )
Return
WaitOn("Espere, recogiendo informacion...",@oWait )
HB_GCALL( .F. )
FWCONNECT lServer HOST cServer ;
USER cUser ;
PASSWORD cPassword ;
DATABASE cDBName
CheckConect()
cMsg := "SELECT * FROM personal_mov p WHERE fecha='2030-03-04'"// LIMIT 2000"
cQry := aServer:Query( cMsg )
nnc := 1
xnn := 0
While !cQry:Eof()
oWait:Say(1,3,"Espere, actualizando Reg.: "+Alltrim( Str( cQry:id ) )+" -- "+Alltrim(Str(nnc))+Space(40) )
SysRefresh()
// si ha recorrido 1000 registro de limpie la memoria
If xnn>1000
SYSWAIT( 0.5 )
HB_GCALL( .F. )
xnn:=0
Endif
cMsg := "SELECT * FROM personal_mov WHERE id = "+ClipValue2Sql( cQry:id )
aQry := lServer:Query( cMsg )
If aQry:lastrec()>0
oWait:Say(1,3,"Espere, actualizando Reg.: "+Alltrim( Str( cQry:id ) )+" -- "+Alltrim(Str(nnc))+" ok..."+Space(30) )
SysRefresh()
cMsg := "update personal_mov set "
cMsg += "idasistencia = "+ClipValue2Sql( aQry:idasistencia )
cMsg += ",idempresa = "+ClipValue2Sql( aQry:idempresa )
cMsg += ",idfundo = "+ClipValue2Sql( aQry:idfundo )
cMsg += ",campana = "+ClipValue2Sql( aQry:campana )
cMsg += ",semana = "+ClipValue2Sql( aQry:semana )
cMsg += ",tipo = "+ClipValue2Sql( aQry:tipo )
cMsg += ",idpersonal = "+ClipValue2Sql( aQry:idpersonal )
cMsg += ",fecha = "+ClipValue2Sql( aQry:fecha )
cMsg += ",idparcela = "+ClipValue2Sql( aQry:idparcela )
cMsg += ",idlote = "+ClipValue2Sql( aQry:idlote )
cMsg += ",idlabor = "+ClipValue2Sql( aQry:idlabor )+" "
cMsg += "WHERE id="+ClipValue2Sql( aQry:id )
aServer:Execute( cMsg )
EndIf
aQry:End()
cQry:Skip()
nnc++
xnn++
EndDo
cQry:End()
lServer:End()
WaitOff( @oWait )
Return
- JoseAlvarez
- Posts: 807
- Joined: Sun Nov 09, 2014 5:01 pm
Re: Error Irrecuperable 9009
Hace un par de meses tuve un problema similar.
El detalle (en mi caso) fue que windows 32 bits solo reconoce hasta 4gb de RAM. Puedes tener mas, pero creo que no pasa de 3.5gb para uso de nuestras aplicaciones. Incluso, puedes tener windows de 64 bits, que reconoce hasta 2TB pero si tu aplicacion esta compilada a 32 bits, el resultado sera el mismo: 3.5gb disponibles.
La conclusión a la que llegue fue: o migrar mi app a FW64BITS o seccionar el reporte.
Resolví con lo último, ya que no tengo fw64
Sería bueno escuchar la opinión de otros usuarios.
El detalle (en mi caso) fue que windows 32 bits solo reconoce hasta 4gb de RAM. Puedes tener mas, pero creo que no pasa de 3.5gb para uso de nuestras aplicaciones. Incluso, puedes tener windows de 64 bits, que reconoce hasta 2TB pero si tu aplicacion esta compilada a 32 bits, el resultado sera el mismo: 3.5gb disponibles.
La conclusión a la que llegue fue: o migrar mi app a FW64BITS o seccionar el reporte.
Resolví con lo último, ya que no tengo fw64
Sería bueno escuchar la opinión de otros usuarios.
"Los errores en programación, siempre están entre la silla y el teclado..."
Fwh 19.06 32 bits + Harbour 3.2 + Borland 7.4 + MariaDB + TDolphin
Carora, Estado Lara, Venezuela.
Fwh 19.06 32 bits + Harbour 3.2 + Borland 7.4 + MariaDB + TDolphin
Carora, Estado Lara, Venezuela.
- Antonio Linares
- Site Admin
- Posts: 42273
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: Error Irrecuperable 9009 ( Solucion en 32bits )
FWH64 es capaz de usar muchísima mas memoria que FWH32
Re: Error Irrecuperable 9009 ( Solucion en 32bits )
Son las cosas de la concatenacion de cadenas, que fragmenta la memoria y es capaz de echar abajo al ordenador con mas memoria del mundo
Aquí se habla del asunto y Manu Expósito aporta una solución que no sólo evita la fragmentación sino que mejora la velocidad en los procesos de concatenación. Para leerlo con gusto: https://forums.fivetechsupport.com/view ... b2#p211646
Aquí se habla del asunto y Manu Expósito aporta una solución que no sólo evita la fragmentación sino que mejora la velocidad en los procesos de concatenación. Para leerlo con gusto: https://forums.fivetechsupport.com/view ... b2#p211646
- carlos vargas
- Posts: 1721
- Joined: Tue Oct 11, 2005 5:01 pm
- Location: Nicaragua
Re: Error Irrecuperable 9009 ( Solucion en 32bits )
Una cosa es que llamar un sysrefresh en un ciclo es peligroso, se debe hacer cada x ciclos, hacerlo en cada iteración no es lo adecuado, por ejemplo yo hago que cada 20 iteraciones llame al sysrefresh, por ejemplo antes de incio del ciclo inicializado una var contadora a cero, la incrementas en cada iteración y haces un control para que se ejecute sysrefresh cada cierto tiempo.
Var:=0
Do while ...
++Var
...
If mod(Var,20)=0
Sysrefresh()
Endif
Enddo
Var:=0
Do while ...
++Var
...
If mod(Var,20)=0
Sysrefresh()
Endif
Enddo
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
Carlos Vargas
Desde Managua, Nicaragua (CA)
- carlos vargas
- Posts: 1721
- Joined: Tue Oct 11, 2005 5:01 pm
- Location: Nicaragua
Re: Error Irrecuperable 9009 ( Solucion en 32bits )
Una cosa es que llamar un sysrefresh en un ciclo es peligroso, se debe hacer cada x ciclos, hacerlo en cada iteración no es lo adecuado, por ejemplo yo hago que cada 20 iteraciones llame al sysrefresh, por ejemplo antes de incio del ciclo inicializado una var contadora a cero, la incrementas en cada iteración y haces un control para que se ejecute sysrefresh cada cierto tiempo.
Code: Select all | Expand
Var:=0
Do while ...
++Var
...
If mod(Var,20)=0
Sysrefresh()
Endif
Enddo
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
Carlos Vargas
Desde Managua, Nicaragua (CA)