Page 1 of 1

acerca de lo errores que manda el stack

PostPosted: Tue Aug 07, 2007 9:27 pm
by Gerardo Farfan
existe algun lugar en donde venga una explicacion de los errores que manda el stack, por ejemplo

(b)WNDMAIN (0) Unrecoverable error 650: Processor stack fault

este error me lo envia cuando agrego una funcion, mas sin embargo la quito del programa y no manda dicho error. :?

de antemano muchas gracias.

PostPosted: Tue Aug 07, 2007 9:44 pm
by Antonio Linares
Gerardo,

Que valores de heapsize y de stacksize estas usando en el fichero LNK ?

PostPosted: Tue Aug 07, 2007 10:24 pm
by Gerardo Farfan
Antonio, estoy usando en el stacksize 9500 y en el heapsize 2048

los cuales he estado incrementando pero aun asi persiste este error

PostPosted: Tue Aug 07, 2007 10:48 pm
by Antonio Linares
Prueba a incrementar el stacksize de 1000 en 1000 hasta que desaparezca el error. Si no lo consiguieses, prueba a decrementarlo de 1000 en 1000.

PostPosted: Tue Aug 07, 2007 11:09 pm
by Gerardo Farfan
y cual seria (en caso de) el tope minimo que soporta???

PostPosted: Tue Aug 07, 2007 11:20 pm
by Antonio Linares
En la documentación de FiveWin está explicada la distribución de la memoria en los 64Ks que usa Clipper:

<------------------------------------------- 64 Ks ---------------------------------------------->

DATA,_BSS (SYMP) | STACK_C | HEAP_C | CLIPPER STACK | CLIPPER STATICS
<----------------- initial DG size --------------->

En el fichero LNK especificas el valor de STACK_C y de HEAP_C. Cuanto más crezcan menos tamaño le quedará a Clipper para el stack (la pila) de su máquina virtual.

Cuantas más variables estáticas uses, mas tamaño le quitas al stack de la maquina virtual de Clipper.

Si el valor de STACK_C disminuye, no podrás ejecutar muchas llamadas a funciones desde otras funciones: a() llama a b() que llama a c() que llama a d(), etc.

Los GETs de Windows consumen HEAP_C, luego si usas muchos GETs simultaneamente, necesitas aumentar HEAP_C

Como ves, se trata de encontrar un equilibrio entre todos esos valores.

Al pasar tu aplicación a 32 bits usando FWH y Harbour/xHarbour desaparece todo este problema :-)

PostPosted: Tue Aug 07, 2007 11:29 pm
by Gerardo Farfan
Gracias Antonio, lo checo

PostPosted: Tue Aug 07, 2007 11:34 pm
by Antonio Linares
He editado mi post anterior con la explicación. Espero que te sea de utilidad

PostPosted: Wed Aug 08, 2007 3:18 pm
by Gerardo Farfan
Gracias Antonio.

Una pregunta mas, al migrar la aplicacion a FwH y Harbour, es necesario hacer adecuaciones al codigo o este pasa sin ningun cambio???

PostPosted: Wed Aug 08, 2007 6:57 pm
by Antonio Linares
Practicamente pasas a FWH sin ningún cambio