Ho un driver di test collegato a una libreria che ho scritto. La libreria utilizza gli autotools in modo che produca sia un archivio (.a file) che una libreria dinamica (.so).Errori Valgrind se collegati con -static - Perché?
Quando collego il mio driver con 'g ++ -static', presumibilmente collegando a .a, valgrind si illumina ripetutamente 'Il salto condizionato o lo spostamento dipende dal/i valore/i non inizializzato'. Il primo errore si verifica prima di main in __pthread_initialize_minimal.
Quando collego senza -static, presumibilmente collegando con .so, non ricevo lamentele di valore.
Qualcuno sa perché? Valgrind non funziona con -static?
UPDATE: non posso postare persino una versione abita in fondo del mio autista perché si collega a una grande libreria che non è possibile riuscivo a snellire, ma ho notato che più semplice di tutti i programmi di
int main()
{
return 0;
}
dà un errore se direttamente connessa al -static ed eseguire da valgrind:
==15449== Use of uninitialised value of size 8
==15449== at 0x40B0F3: exit (in /home/jdgordo/src/t)
avrei compreso che sto correndo a 64 bit Redhat 5.5.
prova a restringere il problema al minor numero possibile di linee e postare qui. – fazo
Ci sono un sacco di errori e scorciatoie nelle varie librerie di sistema in modo che non sia insolito vederli venire in valgrind. Potresti provare a ignorarli sistematicamente, suppongo, o semplicemente fare i tuoi test con la versione condivisa. –
Non vedo questo sul mio sistema. @KerrekSB - ha ragione, non è qualcosa di cui preoccuparsi e Valgrind spedisce con un file di grandi dimensioni che sopprime la maggior parte di questi. Probabilmente è un po 'errato per la tua versione di libc/compilatore sul tuo sistema in qualche modo. – Flexo