Re: segfault su Debian & su centos 5 no
- To: emmanuel segura <emi2fast@gmail.com>
- Cc: bodrato@mail.dm.unipi.it, ml debian <debian-italian@lists.debian.org>
- Subject: Re: segfault su Debian & su centos 5 no
- From: Federico Di Gregorio <fog@dndg.it>
- Date: Tue, 01 Jan 2013 21:08:36 +0100
- Message-id: <50E34244.6030907@dndg.it>
- In-reply-to: <CAE7pJ3D2s7kZsaZh5Fse_2Z+Vz7b7hVp=cayxZwpCbAnB6RnsA@mail.gmail.com>
- References: <CAE7pJ3DdPFfTsZtg1-M01B_gBX1JFDLmf_fiivcg9LcN8Xrsgw@mail.gmail.com> <36307.151.32.166.21.1356948957.squirrel@mail.dm.unipi.it> <CAE7pJ3D2s7kZsaZh5Fse_2Z+Vz7b7hVp=cayxZwpCbAnB6RnsA@mail.gmail.com>
On 31/12/2012 12:14, emmanuel segura wrote:
> Capisco il tuo consiglio e ti rigranzio, ma comunque non mi spiego
> perche su debian a 64 non funziona invece su una debian a 32bit e su
> centos 32 bit si
Perché la memoria viene assegnata ad un programma in multipli di una
pagina (credo 4K). Quindi quando dichiari un array di 1 elemento ed
altre variabili il compilatore gli dedica *minimo* 4K. Se scrivi li
dentro non succede un segfault (anche se il programma è bacato) perchè
la CPU si accorge degli accessi all'esterno della memoria del processo
solo quando vai fuori dalla pagina. "pa" ha una dimensione (a occhio) di
8 byte (su di una architettura a 32 bit) quindi ne puoi scrivere un po'
prima di finire fuori dalla pagina. Anzi, su di un 32 bit ne puoi
scrivere più di 256 e il programma funziona mentre su di un 64 bit...
*sbang* (la struttura su di un 64 bit occupa più memoria, direi 16 byte
così ad occhio).
federico
--
Federico Di Gregorio federico.digregorio@dndg.it
Studio Associato Di Nunzio e Di Gregorio http://dndg.it
Gli esseri umani, a volte, sono destinati, per il solo fatto di
esistere, a fare del male a qualcuno. -- Haruki Murakami
Reply to: