Newsgroup: it.comp.os.linux.development
Titolo: Stack size in Linux

Salve!
    Nei programmi DOS e WIN16 bisogna stare attenti alla dimensione dello
stack; mi e' stato detto che in WIN32 non e' piu' cosi', ossia lo stack
cresce dinamicamente a seconda del bisogno... Come stanno le cose in Linux?
Saluti,
    Mardy

_
ma...@toglimi.geocities.com
 wrote:

Lo stack viene allocato secondo necessita` (o meglio, quando necessario
vengono mappate delle pagine di vera RAM nello spazio di indirizzamento
del programma che viene occupato dallo stack).
Credo che ci sia un limite teorico ma esauriresti prima la memoria
fisica.
-- 
ciao, | [Per rispondere togli "toglimi" dal mio indirizzo.]
Marco | * The Internet is full. Go away.  -- Joel Furr *
      | (Ri)scoprire fidonet: 
http://bbs.mi.linux.it

cresce dinamicamente a seconda del bisogno... 
Fai la prova. Una bella funzione ricorsiva, e guarda dopo quanto esplode.
Leonardo
".signature": bad command or file name

 fisica.
Su un kernel "stock" il limite massimo dello spazio di indirizzamento per
un processo sotto architetture a 32 bit e` di 2 giga. Ci sono patches
(BIGMEM) per arrivare fino a 4. Piu` di cosi` non si puo`, si e` finito lo
spazio di indirizzamento del processore. Su architetture a 64 bit (Alpha,
UltraSparc, Itanium quando uscira`,...) il problema non si pone proprio.
Per quanto riguarda le dimensioni dello stack vero e proprio, il limite di
fatto e` la memoria disponibile (RAM+SWAP), a meno che non si sia deciso di
limitarla (controlla "ulimit" (man bash, man zshbuiltins) per avere
ulteriori informazioni:).
-- 
  /Kinkie
Se sulla scatola c'e` scritto "Per windows 95 e superiori", dovrebbe
funzionare sotto Linux, vero?

 Fai la prova. Una bella funzione ricorsiva, e guarda dopo quanto esplode.
Facile. Quando finisci la RAM.


 Fai la prova. Una bella funzione ricorsiva, e guarda dopo quanto esplode.
scusa, ma non sei stato tu a dirmi che se hai una cosa del tipo
void funzioneDiProva() {
	funzioneDiProva();
}
il gcc non te lo lascia compilare?
-- 
Non c'č piů forza nella normalitŕ: c'č solo monotonia.

 wrote:
:)cresce dinamicamente a seconda del bisogno... Come stanno le cose in Linux?
fai un grep su /usr/include ;)
Oha
"Ci sono tre tipi di persone al mondo: quelle che sanno contare, 
e quelle che non ne sono capaci."

Facile. Quando finisci la RAM.
SE lo stack cresce dinamicamente. Basta che la funzione stampi quant'e' la
RAM ancora disponibile e magari ritorni 0 anziche' se stessa appena scende
sotto, diciamo, 128K.


 il gcc non te lo lascia compilare?
Sicuro ? Ho provato con il GCC sotto Solaris, e mi pare che sia terminata la
tabella dei processi (Non so come si dice in italiano, insomma, hai capito, 
no :-) ?). 
-- 
                                                                     __
 __                                                              _  ///
| _        Student in Computer Science, Swiss Federal Institute  \\///
|__|iambo      of Technology - mailto:
ggia...@iiic.ethz.ch
       \X/

 no :-) ?).
Che c'entra una tabella dei processi con una funzione ricorsiva? La tabella 
dei processi ha un senso per i cosiddetti "conigli", cose del tipo
int main() {
        while (1)
                fork();
}
Anche con questi non ci sono particolari problemi: sotto Linux (come sotto
qualsiasi Unix-compatibile configurato con un minimo di decenza) esiste un
limite "hard" al numero di processi che un utente non-root puo` avere
(dovrebbe essere 999, ovviamente modificabile previa ricompilazione del
kernel).
Ricordo che in una giornata di particolare scazzo lanciai un paio di
conigli sul mio (allora) Pentium 100 per vedere quale load average avrei
potuto far raggiungere al sistema, che si fermo` a circa 340.


 kernel).
Eppure son convinto di aver "bloccato" una SUN dando un "wile TRUE do fork"
.. Nessuno ha la possibilita' di provare ?
-- 
Giambo - In vacanza con un portatilino e Linux ...

Eppure son convinto di aver "bloccato" una SUN dando un "wile TRUE do fork"
E` una normale fork bomb. Se usi ulimit non succedera` niente al
sistema.


 .. Nessuno ha la possibilita' di provare ?
perché non lo hai detto un mese fa prima che rimuovessi solaris 2.6 dalla
sparc? :-)
-- 
Non c'è più forza nella normalità: c'è solo monotonia.

 sistema.
Da cio' si deduce la competenza del sistemista :-/ ...
Gia' che ci sono: Hanno dotato le macchine SUN di ZIP. Bello, peccato che
per accederci bisogna usare una versione modificata delle DOS-utils
(Quindi: "mcopy z:myfile.txt ."). Quando ho chiesto perche' non fosse
possibile montare semplicemente lo ZIP come un floppy, la risposta e' stata
"Questione di sicurezza". La mia domanda e': Dove viene indebolita la
sicurezza di un sistema se si da' la possibilita' all'utente di montare un
floppy ma non uno ZIP ?


 sparc? :-)
Immagino la SPARC giri con Linux ora :-) ...


floppy ma non uno ZIP ?
Mi preoccupa molto di piu` mtools che magari e` suid.


 floppy ma non uno ZIP ?
Beh, penso che sia una questione di filesystems. Nulla vieterebbe a una
persona malintenzionata di fare un filesystem ext2 su uno ZIP, e metterci
su una shell setuidata root. Instant crack. Ecco perche` permettere a
un utente di montare con un dispositivo e` sempre un'idea da considerare
con cautela (noexec,nosuid,nodev,ecc ecc ecc).


 per accederci bisogna usare una versione modificata delle DOS-utils
io ho un howto a riguardo. Provo a sparartelo in mailbox. Se il mio
sendmail idiota non te lo fa arrivare fammi un fischio.


Fai la prova. Una bella funzione ricorsiva, e guarda dopo quanto esplode.
Oltre le 500K ricorsioni, gia` fatto.


 con cautela (noexec,nosuid,nodev,ecc ecc ecc).
E su un floppy non ci starebbe la shell ?
-- 
Giambo - Sotto l'albero ho trovato "Linux in a nutshell" :-9 !

 sendmail idiota non te lo fa arrivare fammi un fischio.
Ho aspettato qualche giorno - niente :) ...
-- 
Giambo - Che a capodanno ha dovuto scegliere tra la ragazza e il pinguino

Oltre le 500K ricorsioni, gia` fatto.
In Windows 95/98? Con che compilatore e che modello di memoria?


In Windows 95/98? Con che compilatore e che modello di memoria?
In linux ovviamente...


 Ho aspettato qualche giorno - niente :) ...
il tuo indirizzo è 
ggia...@iiic.ethz.ch
?


 con cautela (noexec,nosuid,nodev,ecc ecc ecc).
non a caso in linux l'opzione "user" implica appunto
"noexec,nosuid,nodev" ...
non capisco dove sia il vantaggio di usare mtools (almeno dal punto di
vista della sicurezza...)

In linux ovviamente...
Ah, ecco. Perche' l'altro sventurato parlava di Win32, e a me spesso mi
s'inchioda a _compilarla_, la funzione, figurarsi eseguirla.
Dipende naturalmente dal modello di memoria, e se si usano le Microsoft
Affoundation Classes, e se si e' in debug mode, e se il caps lock e' in
ON od OFF, senza dimenticare il driver multimediale del mouse (il quale
e', ovviamente, plug & play [2]).
Leonardo che cià i testimoni [1]
[1] Se il tuo omonimo mnencia@xx segue questo NG, lo invito a ricordare
    cosa e' successo a compilare il meta32, e dopo quanto ha funzionato
    buttando via le odiose & svpponenti MFC
[2] Non sto scherzando. Lo so, che pensate che sia una delle mie solite
    sparate, brutti ingratacci senza Dio. Invece no, o fortvnati vtenti
    della sympatica vtility "EM_EXEC", fornita di serie con i Logitech!
    Essa Vi fornirà ore ed ore di eccitante ricerca di bug inesistenti,
    messaggi finestra inviati dai Borg e pulsanti scroll in overdose da
    Viagra (1 pulsante = 5x5 cm. su un 15" 800x600).
