Aplicacion 32bits en maquina de 64
andrade en theory.polytechnique.fr
andrade en theory.polytechnique.fr
Mar Abr 15 04:36:55 CLT 2008
Hola,
On Tue, 15 Apr 2008, Rodrigo Javier Tobar Carrizo wrote:
> Hola a todos!
>
> Tengo un problema interesante... ojala alguien me pueda ayudar. El problema
> en cuestion es el siguiente:
>
> Maquina de 64 bits. Programa compilado con gcc -m32. Librerias de 32 bits.
> Todo funciona OK hasta que aparece el nunca bien ponderado "Segmentation
> fault". En gdb tengo la siguiente informacion (entre otras cosas...):
>
Alguna razon para compilar en 32 bits y no en 64? Si es un codigo
numerico, como parece, los registros extra de los 64 bits probablemente
ayudaran al rendimiento.
> Program received signal SIGSEGV, Segmentation fault.
> 0x080495cd in generate_new_population () at subgalaxyfinder.c:763
> 763 GalA[numgal].BulgeMass = 0.0;
> (gdb)
>
> Es decir, se me cae en una asignacion, asi de simple. Si intento hacer una
> asignacion directamente con memcpy(3), tambien cae. strace no arroja nada
> peculiar. Si borro una instruccion o agrego otra, eventualmente se cae en
> alguna. El programa consume (es variable) a lo mas ~600 MB en RAM. En la
> maquina tengo 8 GB de RAM + 2 de swap.
Que te dice que es efectivamente un problema de los 32/64 bits? La
asignacion que estas haciendo accede un arreglo y luego un miembro de una
clase, esas cosas perfectamente pueden dar un segmentation fault
"legitimo" (un indice fuera del tama~no del arreglo).
Intenta correr tu codigo dentro de valgrind (con la herramienta por
defecto: memcheck), eso te dara mas informacion de donde puede estar el
problema y si efectivamente tiene que ver con los 32 bits.
Saludos,
Xavier
Más información sobre la lista de distribución Linux