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