Funziona ma non su un PC dual xeon con Debian.
Von: GiAn (gianogli@jumpy.it) [Profil]
Datum: 14.06.2006 12:03
Message-ID: <e6omn0$d4l$1@nntp.aioe.org>
Newsgroup: it.comp.lang.c
Datum: 14.06.2006 12:03
Message-ID: <e6omn0$d4l$1@nntp.aioe.org>
Newsgroup: it.comp.lang.c
All'interno di un programma ho un thread cosi' strutturato:
//////////////////////////////////////////////////////
void *thread(void *v) {
//Inizializzazione variabili
while (1) {
if ([condizione esecuzione algoritmo]) {
//Algoritmo da eseguire
} else {
/* No data, sleep for a little bit. */
struct timespec tm;
tm.tv_sec = 0;
tm.tv_nsec = 100000000; /* 0.1s */
[ERR] nanosleep(&tm, NULL);
}
}
return NULL;
}
//////////////////////////////////////////////////////
Il programma che contiene questo thread funziona correttamente su molti
PC/distribuzioni linux differenti tranne su un dual xeon su cui e'
installata una Debian Sarge.
Dopo qualche decina di secondi di utilizzo il programma va in crash.
Utilizzando gdb viene restituito il seguente errore:
Program received signal SIG32, Real-time event 32.
[Switching to Thread -1225905232 (LWP 10344)]
0xb7f33b4c in __nanosleep_nocancel () from /lib/tls/libpthread.so.0
E il Back Trace...
(gdb) bt
#0 0xb7f33b4c in __nanosleep_nocancel () from /lib/tls/libpthread.so.0
#1 0x0804e62b in thread (v=0x0) at mythread.c:525
#2 0xb7f2ecfd in start_thread () from /lib/tls/libpthread.so.0
#3 0xb79b513e in clone () from /lib/tls/libc.so.6
La riga 525 del file mythread.c e' quella indicata nel codice con "[ERR]".
Da cosa puo' essere dovuto questo errore?
Grazie a tutti...
GiAn
[ Auf dieses Posting antworten ]