|
|
|
|
Strumenti |
21-07-2003, 17:51 | #1 |
Senior Member
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13826
|
ricompilare GLIBC per incrementare lo stack size...
Ciao a tutti e soprattutto a ilsensine
Allora, ho problemi con programmi che usano i POSIX THREADS. Cioè , a quanto sembra ho compilato la mia versione di GLIBC (2.3.2) con uno stack size per i PTHREADS di 2MB ( 2052kb per intenderci ) e a quanto sembra Winex ha problemi per esempio. Mi hanno consigliato di ricompilare GLIBC per incrementare lo stack size , ma sinceramente non so che fare , e anke il pensiero che fallire la compilazione delle GLIBC mi cancellerebbe il mio bel sistemino definitivamente mi fa un po' paura Insomma , che flag , variabile devo impostare per incrementare lo stack size durante la compilazione delle GLIBC? (possibilmente qualcosa di sicuro , perchè non ho voglia di compilare GLIBC 2 volte,dato che la compilazione + check (che faccio per gagia ) non dura proprio 2 minuti ) Ciao e grazie
__________________
GPU Compiler Engineer |
21-07-2003, 18:27 | #2 |
Bannato
Iscritto dal: Mar 2002
Città: Pescara - 未婚・恋人なし Moto: Honda CBR 1000 RR Casco: XR1000 Diabolic 3
Messaggi: 27578
|
-- con uno stack size per i PTHREADS di 2MB ( 2052kb per intenderci )
2 Mb sono 2048 kb ... Comunque non esiste un parametro da passare per modificare quello stack di cui parli. Anche se chi ti ha consigliato ha detto una minkiata, forse intendeva di modificare lo stack del programma con cui hai problemi che usa i POSIX Threads, e non la libreria direttamente... Cerca nei sorgenti la funzione pthread_attr_setstacksize() e modificala di conseguenza... EDIT: Il parametro da modificare è il secondo... Quando modifichi, cerca di assicurarti che sia multiplo di 1 Mb (1024 Kb), pertanto usa il seguente formato: 1024 per 1 Mb 2 * 1024 per 2 Mb 3 * 1024 per 3 Mb e così via.... Ultima modifica di mjordan : 21-07-2003 alle 18:30. |
21-07-2003, 18:33 | #3 | |
Senior Member
Iscritto dal: Oct 2001
Messaggi: 11471
|
Re: ricompilare GLIBC per incrementare lo stack size...
Quote:
dovresti avere ancora /static dalla compilazione di lfs cosi puoi usare quelli in caso di macello in uno dei file dentro a LinuxPthreads dovrebbe esserci #define STACK_SIZE 2048 o qualcosa del genere prova a modificare quello. per trovare il file dai un bel grep 'STACK_SIZE' -R * e controlla dove è usato. approposito non mi assumo nessuna responsabilita di quello che ho detto :P ciao |
|
21-07-2003, 18:50 | #4 | |
Senior Member
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13826
|
Quote:
Lo so che 2 MB sono 2048 , ma ho scritto 2052 per precisare la dimensione precisa , infatti guarda il messaggio di errore : Your system requires the use of pthreads but the maximum system allowed stack size of 2052 kB may be too small mi è sembrato giusto essere il + preciso possibile. Comunque il messaggio di errore è chiaro , dice che lo stack è troppo piccolo, quindi ci deve essere un modo per renderlo + grande. Ciao
__________________
GPU Compiler Engineer |
|
21-07-2003, 18:53 | #5 | |
Senior Member
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13826
|
Re: Re: ricompilare GLIBC per incrementare lo stack size...
Quote:
Proverò a vedere quello che mi hai consigliato. Ma mi stava venendo in mente un idea, quella di scaricare l'ebuild di GLIBC di gentoo e controllare i parametri impostati da quello , dato che su gentoo non avevo questo problema. Potrebbe essere possibile ? Il consiglio su internet parlava anke di un certo FLOATING_STACK , qualcuno ne sa qualcosa? Ciao
__________________
GPU Compiler Engineer |
|
21-07-2003, 19:24 | #6 |
Bannato
Iscritto dal: Mar 2002
Città: Pescara - 未婚・恋人なし Moto: Honda CBR 1000 RR Casco: XR1000 Diabolic 3
Messaggi: 27578
|
Ok...
Dentro linuxthreads/descr.h hai la costante STACK_SIZE. Modifica quella. Bada che il numero che ti identificherà la dimensione dello stack dev'essere una potenza di 2 e un multiplo di PAGE_SIZE. La dimensione di PAGE_SIZE è calcolata mediante la funzione sysconf(). Per determinare la dimensione sul tuo sistema, usa il seguente programma: page.c Codice:
/* Calcola la dimensione di PAGE_SIZE sul sistema in uso. */ #include <stdio.h> #include <unistd.h> int main(void) { printf("%d\n", sysconf(_SC_PAGE_SIZE)); return 0; } Dovresti ottenere la dimensione in byte che devi usare per calcolare la nuova dimensione di STACK_SIZE dentro descr.h Ciao. |
21-07-2003, 19:43 | #7 |
Senior Member
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13826
|
grazie , appena ho l' occasione provo
Ciao
__________________
GPU Compiler Engineer |
21-07-2003, 19:46 | #8 | |
Bannato
Iscritto dal: Mar 2002
Città: Pescara - 未婚・恋人なし Moto: Honda CBR 1000 RR Casco: XR1000 Diabolic 3
Messaggi: 27578
|
Quote:
|
|
21-07-2003, 19:53 | #9 |
Senior Member
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13826
|
Domanda :
Io so che GLIBC 2.3.2 supporta l'add-on NPTL (Native Posix Threads Library ) , io quando l'ho compilato ho usato LinuxThreads , non è che ricompilandolo semplicemente con NPTL mi risolverebbe il problema? E l'uso di NPTL anzichè LinuxThread porterebbe problemi di compatibilità con i programmi già installati ? E' possibile far magari convivere LinuxThreads con NPTL? Grazie Ciao
__________________
GPU Compiler Engineer |
21-07-2003, 20:00 | #10 |
Bannato
Iscritto dal: Mar 2002
Città: Pescara - 未婚・恋人なし Moto: Honda CBR 1000 RR Casco: XR1000 Diabolic 3
Messaggi: 27578
|
Può darsi. NTPL è una nuova implementazione dei Posix Threads e le differenze sostanziali interne sono appunto la gestione dello stack. Tuttavia sembrano essere incompatibili fra di loro. Te lo dico per certo perchè ad esempio Red Hat dalla versione 9.0 usa le NTPL di default e mi dava problemi con Oracle 9i. Ho dovuto reinstallare una versione delle glibc con i floating stack (i pthreads tradizionali per intenderci) per far funzionare l'installazione. Potresti provare, magari risolvi. Che distro usi??
|
21-07-2003, 20:08 | #11 | |
Senior Member
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13826
|
Quote:
Potrei provare , ma potrei buttare anke giù tutto dalla finestra , giusto? Uso LinuxFromScratch , mi sono compilato tutto a mano , e questo è uno dei motivi per il quale preferirei evitare l' implosione del sistema Ciao
__________________
GPU Compiler Engineer |
|
21-07-2003, 20:09 | #12 |
Bannato
Iscritto dal: Mar 2002
Città: Pescara - 未婚・恋人なし Moto: Honda CBR 1000 RR Casco: XR1000 Diabolic 3
Messaggi: 27578
|
Comunque, come ti ho detto prima, non ti conviene toccare il codice dell'implementazione dei threads bensì modificare il secondo parametro della funzione pthread_attr_setstacksize() nel file di codice sorgente dell'applicazione in questione. Se poi l'errore te lo da in fase di configure e non a runtime allora modifica come detto sopra... Posso sapere che programma è che ti da questo problema??
|
21-07-2003, 20:13 | #13 |
Senior Member
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13826
|
certo , il programma in questione è niente popò di meno che...... WINEX .
Il problema lo rileva gente da tutto il mondo , gente soprattutto con SuSE e RedHat , anke Gentoo ho sentito (ma che probabilmente usano il ramo instabile ~x86 ) e , vabbè, io Attenzione , alla fine per me Winex ora come ora non è un programma fondamentale, anzi , però questa cosa mi puzza , e a me piace arrivare in fondo alle cose , e mi sarebbe piaciuto sapere se c'è in qualche modo una soluzione . CIao
__________________
GPU Compiler Engineer |
21-07-2003, 20:14 | #14 |
Bannato
Iscritto dal: Mar 2002
Città: Pescara - 未婚・恋人なし Moto: Honda CBR 1000 RR Casco: XR1000 Diabolic 3
Messaggi: 27578
|
Mai usato WineX... Ma il problema è rilevato al configure o durante il runtime con un crash?
|
21-07-2003, 20:18 | #15 |
Senior Member
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13826
|
All' esecuzione lo da, ho provato sia la versione precompilata che la versione CVS . La versione pre-compilata (quella commerciale per intenderci) mi da questo messaggio (quello che avevo postato all' inizio) e non funziona (o funziona male , a seconda dell' applicazione) , la versione CVS non da il messaggio , ma si limita a funzionare male esattamente come la versione precompilata.
Ciao
__________________
GPU Compiler Engineer |
21-07-2003, 20:20 | #16 |
Bannato
Iscritto dal: Mar 2002
Città: Pescara - 未婚・恋人なし Moto: Honda CBR 1000 RR Casco: XR1000 Diabolic 3
Messaggi: 27578
|
Allora molto probabilmente se te lo da a runtime e come dicevo io.... Non c'entra niente la dimensione in STACK_SIZE nell'implementazione pthreads. Modifica pthread_attr_setstacksize() e vivi in pace
|
21-07-2003, 20:23 | #17 |
Senior Member
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13826
|
Ok , ci provo
Ciao PS= Comunque è un peccato non poter usare la versione pre-compilata , perchè ha delle features in +...
__________________
GPU Compiler Engineer |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:46.