Aplicacion 32bits en maquina de 64
Rodrigo Javier Tobar Carrizo
rtobar en alumnos.inf.utfsm.cl
Mar Abr 15 12:56:03 CLT 2008
andrade en theory.polytechnique.fr escribió:
> 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.
Si, es probable... pero el programa es grande, hay lectura y escritura
de archivos, y muuuuuchas declaraciones. Entre tanta cosa, el cambio de
que un long pese 4 bytes u 8 bytes afecta. Por eso quiero tratar de
mantener el programa con 32 bits.
>> 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).
Alvaro me pregunto lo mismo. Se me olvido resaltarlo en el primer
mensaje, pero ambos (GalA como puntero, y numgal como indice) son
valores legitimos.
> 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.
No se me habia ocurrido, lo voy a hacer a ver si es que sale algo
interesante.
> Saludos,
>
> Xavier
Saludos!
--
Rodrigo Tobar Carrizo http://csrg.inf.utfsm.cl/~rtobar
CSAT Project Leader +56 9 78073439
Linux User #399271
Más información sobre la lista de distribución Linux