Ciao a tutti, ho creato un codice in c per un progetto real time. Ho utilizzato la libreria pthread.h per creare un certo numero di thread. Per sincronizzarli o comunque non farli accedere contemporaneamente ad una sezione critica ho creato dei semafori (semaphore.h) e in seguito li ho sostituiti con dei mutex.
In più ho impostato la SCHED_FIFO come schedulazione. Il fatto è che ho riscontrato dei problemi: a volte dopo aver compilato il codice, il programma non parte e mi restituisce questo errore si segmentazione compilando con
-g e con il comando
gdb:
Program received signal SIGSEGV, Segmentation found
[Switching to Thread 0x7fffddffb700 (LWP 1891)]
0x00007ffff774f3be in _unix_lock_mutex()
from /usr/lib/x86_64-linux-new-liballeg.so.4.4
Dopo aver dato il comando
(gdb) bt mi restituisce:
#0 0x00007ffff774f3be in _unix_lock_mutex()
from /usr/lib/x86_64-linux-new-liballeg.so.4.4
#1 0x00007ffff771fef3 in _handle_timer_tck()
from /usr/lib/x86_64-linux-new/liballeg.so.4.4
#2 0x00007ffff774d57e in ?? () from /usr/lib/x86_64-linux-new/liballe.so.4.4
#3 0x00007ffff7bc26aa in start_thread (arg=0x7fffddffb700)
at pthread_create.c:333
#4 0x00007ffff70d0eed in clone()
at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109
Ho usato anche
valgrind --track-origins=yes ./nome
e mi da un errore di questo tipo:
==1932== Conditional jump or move depends on uninitialized value (s)
==1932== Uninitialized value was create by a stack allocation
Sapete dirmi da cosa deriva il mio errore? Se volete posso postare anche parte del codice.
Grazie mille in anticipo.