Amigos:
Tenemos desarrollado nuestro ERP compilado bajo fw 2.7 dicembre 2005/clipper 5.2e/blinker 6.0, el soft está corriendo bajo win 2003 server (por terminal server) ok en muchos clientes, con varios puestos de trabajo cada uno, pero nos encontramos con errores de ejecución aleatorios de dos tipos:
- aparece el error ntvdm error y el programa se cierra sin dejar rastros.
- el segundo es siempre por Error no recuperable 332: Desbordamiento de la memoria para matrices/cadenas desde distintos lugares del soft pero siempre este error, a modo de ejemplo paso dos secuencias que lo generaron:
ARRAY (0) Error no recuperable 332 o 331: Desbordamiento de la memoria para matrices/cadenas
ARRAY 0000
ACLONE 0000
ACLONE 0000
ACLONE 0000
INITFORM 3799
(b)EXECFORM 2591
TDIALOGL:INITIATE 0000
TDIALOGL:HANDLEEVEN 0000
DIALOGBOXI 0000
TDIALOGL:ACTIVATE 0000
EXECFORM 2591
FORM 2067
(b)MOVIM 0403
MOVIM 0707
(b)GENMENU 0000
TMENU:COMMAND 0000
TWINDOW:COMMAND 0000
TWINDOW:HANDLEEVEN 0000
WINRUN 0000
TWINDOW:ACTIVATE 0000
SYSTEMINIT 0636
INICIO 0158
otra secuencia:
BEGINPAINT (0) Error no recuperable 331: Desbordamiento de la memoria para matrices/cadenas
BEGINPAINT 0000
TGETL:_BEGINPAIN 0000
(b)TGET 0000
TGETL:HANDLEEVEN 0000
DIALOGBOXI 0000
TDIALOGL:ACTIVATE 0000
EXECFORM 2591
FORM 2067
(b)MOVIM 0403
MOVIM 0707
(b)GENMENU 0000
TMENU:COMMAND 0000
TWINDOW:COMMAND 0000
TWINDOW:HANDLEEVEN 0000
WINRUN 0000
TWINDOW:ACTIVATE 0000
SYSTEMINIT 0636
INICIO 0158
Estamos muy perdidos en como rastrear y eliminar estos errores. Por favor cualquier ayuda vendría excelente.
Un abrazo.
Ricardo.-
AYUDA POR FAVOR CON ERRORES ALEATORIOS EN EJECUCION
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Ricardo,
La mejor ayuda para esos errores es que paseis la aplicación a 32 bits con FWH cuanto antes.
Los errores que describes son típicos de aplicaciones de 16 bits con Clipper y son muy difíciles de solucionar
El 332 es que ya no teneis más memoria y es porque estais limitados a 64 Ks en 16 bits. Es algo normal ya que la aplicación crece y esa barrera permanece.
En cuanto al ntvdm aqui tienes algunas indicaciones de MS:
http://support.microsoft.com/kb/220155/es
La solución es migrar a 32 bits cuanto antes
La mejor ayuda para esos errores es que paseis la aplicación a 32 bits con FWH cuanto antes.
Los errores que describes son típicos de aplicaciones de 16 bits con Clipper y son muy difíciles de solucionar
El 332 es que ya no teneis más memoria y es porque estais limitados a 64 Ks en 16 bits. Es algo normal ya que la aplicación crece y esa barrera permanece.
En cuanto al ntvdm aqui tienes algunas indicaciones de MS:
http://support.microsoft.com/kb/220155/es
La solución es migrar a 32 bits cuanto antes
Respecto a lo que comentas sobre NTVDM, nos ha pasado con las instrucciones de borland y cada vez que invocávamos la orden memory(-1),.
Supongo que la aplicación ha funcionado bien siempre y ahora está fallando, si es así confírmamelo.
Otro de los factores qu teneis que tener en cuentas son las limitaciones con tablas que tiene de clipper.
Espero que haya servido de ayuda
Supongo que la aplicación ha funcionado bien siempre y ahora está fallando, si es así confírmamelo.
Otro de los factores qu teneis que tener en cuentas son las limitaciones con tablas que tiene de clipper.
Espero que haya servido de ayuda
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Ricardo,
El error 332 puede "mejorarse" reduciendo el número de variables estáticas usadas, agrupándolas en una sola que las contenga a todas en un array. Que heapsize y stacksize estais usando en el fichero LNK ?
De todas formas, la verdadera solución es pasar a 32 bits y asi superar las barreras que tienen las aplicaciones en 16 bits.
El error 332 puede "mejorarse" reduciendo el número de variables estáticas usadas, agrupándolas en una sola que las contenga a todas en un array. Que heapsize y stacksize estais usando en el fichero LNK ?
De todas formas, la verdadera solución es pasar a 32 bits y asi superar las barreras que tienen las aplicaciones en 16 bits.
antonio:
Te paso directamente nuestro archivo de compilación .lnk
Espero cualquier comentario.
Saludos y Gracias.
BLINKER EXECUTABLE NODELETE
BLINKER EXECUTABLE CLIPPER F255
BLINKER INCREMENTAL OFF
BLINKER PROCEDURE DEPTH 100
BLINKER CLIPPER SYMBOL ON
PACKCODE
PACKDATA
DEFBEGIN
name FiveWin
description 'Clipper for Windows library'
exetype Windows 3.1
code moveable discardable
data preload moveable
stacksize 9500
heapsize 3048
segment 'PLANKTON_TEXT' nondiscardable
segment 'EXTEND_TEXT' nondiscardable
segment 'OM_TEXT' nondiscardable
segment 'OSMEM_TEXT' nondiscardable
segment 'SORTOF_TEXT' nondiscardable
segment 'STACK_TEXT' nondiscardable
DEFEND
SEARCH s:\lib\Five, s:\lib\FiveC, s:\lib\Objects
LIB r:\lib\fiscal
LIB s:\lib\WinApi
LIB j:\evo0703\clases\LOGICLAS.lib
LIB s:\lib\filexls.lib
LIB j:\evo0703\library\LOGIEXEK.lib
LIB r:\lib\clipper
LIB r:\lib\extend
LIB r:\lib\terminal
LIB r:\lib\dbfntx
LIB r:\lib\dbfcdx
LIB r:\lib\FLEX52
FILE INICIO
FILE ERRORSYS
// BEGINAREA
FILE INICIO2
FILE LIBTM300
FILE LIBHASAR
FILE LIBLX300
FILE FILES
FILE LIBPROC
FILE LIBPROC1
FILE LIBPROC2
FILE LIBPROC3
FILE LIBPROC4
FILE LIBESTAD
FILE LIBMOVIM
FILE LIBCOSTO
FILE LIBCONT
// ENDAREA
OUTPUT evo.exe
Te paso directamente nuestro archivo de compilación .lnk
Espero cualquier comentario.
Saludos y Gracias.
BLINKER EXECUTABLE NODELETE
BLINKER EXECUTABLE CLIPPER F255
BLINKER INCREMENTAL OFF
BLINKER PROCEDURE DEPTH 100
BLINKER CLIPPER SYMBOL ON
PACKCODE
PACKDATA
DEFBEGIN
name FiveWin
description 'Clipper for Windows library'
exetype Windows 3.1
code moveable discardable
data preload moveable
stacksize 9500
heapsize 3048
segment 'PLANKTON_TEXT' nondiscardable
segment 'EXTEND_TEXT' nondiscardable
segment 'OM_TEXT' nondiscardable
segment 'OSMEM_TEXT' nondiscardable
segment 'SORTOF_TEXT' nondiscardable
segment 'STACK_TEXT' nondiscardable
DEFEND
SEARCH s:\lib\Five, s:\lib\FiveC, s:\lib\Objects
LIB r:\lib\fiscal
LIB s:\lib\WinApi
LIB j:\evo0703\clases\LOGICLAS.lib
LIB s:\lib\filexls.lib
LIB j:\evo0703\library\LOGIEXEK.lib
LIB r:\lib\clipper
LIB r:\lib\extend
LIB r:\lib\terminal
LIB r:\lib\dbfntx
LIB r:\lib\dbfcdx
LIB r:\lib\FLEX52
FILE INICIO
FILE ERRORSYS
// BEGINAREA
FILE INICIO2
FILE LIBTM300
FILE LIBHASAR
FILE LIBLX300
FILE FILES
FILE LIBPROC
FILE LIBPROC1
FILE LIBPROC2
FILE LIBPROC3
FILE LIBPROC4
FILE LIBESTAD
FILE LIBMOVIM
FILE LIBCOSTO
FILE LIBCONT
// ENDAREA
OUTPUT evo.exe
Antonio:
Me quedé pensando, existe alguna funcion que pueda servir para liberar y realocar memoria tipo la GlobalCompact()? esto podría solucionar este error, porque si el usuario cuando se cierra el sistema vuelve a entrar y hace la operación que antes dio error, ahora no lo da. Claro, antes venia haciendo muchas otras operaciones y supongo que algo quedo feo en la memoria.
Podra servir GlobalCompact() u otra similar que no conozco?
Gracias.
Me quedé pensando, existe alguna funcion que pueda servir para liberar y realocar memoria tipo la GlobalCompact()? esto podría solucionar este error, porque si el usuario cuando se cierra el sistema vuelve a entrar y hace la operación que antes dio error, ahora no lo da. Claro, antes venia haciendo muchas otras operaciones y supongo que algo quedo feo en la memoria.
Podra servir GlobalCompact() u otra similar que no conozco?
Gracias.
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
- creswinman
- Posts: 33
- Joined: Thu Aug 24, 2006 3:14 am
- Location: mexico
- Contact:
A mi me funciona de maravilla clipper con FW en W2003 y TS
Lo único que hago es habilitar que cada ejecución corra en memoria separada.
Puedes crearle un acceso directo y en propiedades Avanzadas marca que corra en memoría separada.
COn FW de 16 el W2K3 corre NTVDM (NT-Virtual Dos Machine) luego adentro corre WOW (Windos de 16 sobre windows de 32)
Si no lo marcas en memoria separada, todos van a correr bajo el mismo ntvdm. y por eso tienes conflictos.
Si lo marcas para que corra en memoria separada, cada ejecucion tendra su propio NTVDM+WOW.
Espero te sirva
Puedes crearle un acceso directo y en propiedades Avanzadas marca que corra en memoría separada.
COn FW de 16 el W2K3 corre NTVDM (NT-Virtual Dos Machine) luego adentro corre WOW (Windos de 16 sobre windows de 32)
Si no lo marcas en memoria separada, todos van a correr bajo el mismo ntvdm. y por eso tienes conflictos.
Si lo marcas para que corra en memoria separada, cada ejecucion tendra su propio NTVDM+WOW.
Espero te sirva