Picon

Violación de segmento según arquitectura

Buenas a todos/as

Aunque creo que esta lista no es la más apropiada, escribo aquí porque
la lista de C++/C no funciona...

Estoy haciendo un programa que descarga una imagen JPG a través de un
socket y la guarda en un fichero en disco.

El programa funciona perfectamente en x86, pero al compilarlo y
ejecutarlo en un ARM (el Chumby más concretamente :P) da una violación
de segmento bastante rarita...

Como el Chumby no tiene GDB ni nada parecido me he puesto a depurar un
poco a la "Pepe el guarro" metiendo printf por bastantes sitios, y cual
es mi sorpresa al descubrir que quien provoca la violación de segmento
es la llamada a fclose para cerrar el descriptor del fichero.

Mi código hace algo parecido a esto:

FILE *f = fopen(IMAGE, "wb");

// escribo la imagen

fflush(f);
fclose(f);

Pues bien, si yo coloco un printf antes o después del "flush", se
imprime correctamente, pero si lo coloco tras el fclose, falla
estrepitosamente.

He comprobado si el fichero se escribía complemente en disco, y es así:
el fichero está en la ubicación indicada con el tamaño esperado y la
imagen está completa, es decir, permite abrirla con cualquier programa
que muestre/manipule JPG.

¿Alguien podría decirme como solucionar este extraño (para mi) suceso?

Gmane