2012-10-18 3 views
6

Sto eseguendo valcheck memcheck su un programma che genera migliaia di altri thread.Come posso impedire a Valgrind di avviare gdbserver integrati per ogni nuovo thread?

Gli altri thread non generano errori e non mi interessa cosa succede loro.

Tuttavia, Valgrind richiede di aprire una named pipe in/tmp ogni volta che viene generato un nuovo thread. Non solo è uno spreco, in realtà rompe il valgrind. A volte valgrind non si ripulisce da solo, e quindi i futuri figli con lo stesso pid (attivo in un secondo momento) non riescono a spawn perché valgrind non può creare una pipe con il nome giusto (esiste già).

Come impedire a Valgrind di realizzare tutti questi tubi!?!

EDIT: Flags ho già provato:

--child-silent-dopo-fork = yes

e le cose che ho già escluso:

--track-children = no (il valore predefinito è no).

+4

"A volte Valgrind non si ripulisce da solo" - LOL! +1 solo per quello :) –

+2

Si prega di inviare le opzioni di controllo valgrind che avete provato. – nalply

+2

Se si rompe valgrind, è possibile eseguire valgrind in valgrind, in modo da poter valgrind valgrind valgrind ... yo dawg, a proposito. – Griwes

risposta

3

Mi spiace rispondere alla mia stessa domanda. Solo per scopi di documentazione.

Esecuzione con la bandiera:

--vgdb=no 

Questo non è adeguatamente documentato nelle pagine man, dal momento che non vi dice che sta andando a vomitare tubi ovunque senza la bandiera, ma è per questo che lo fa .

+0

Puoi rispondere alle tue domande. Questa è una pratica incoraggiata. Non c'è bisogno di scusarsi. – nalply

+0

Come l'hai scoperto? – nalply

+0

Un sacco di goggling + tentativi ed errori. La mailing list valgrind aveva un problema simile. Sembra che succeda quando MMAP fallisce a volte forse. Vedi: http://sourceforge.net/mailarchive/forum.php?thread_name=4F09B6E3.4080107%40bitwagon.com&forum_name=valgrind-users –

1

Se è possibile, regolare il programma iniziale in modo da poter disattivare lo spawning del thread con un argomento della riga di comando. Esegui valgrind sul risultato, eliminando la generazione del thread.

+0

Un'idea ragionevole, ma sfortunatamente, nel mio caso, il programma non fa molto di niente senza i thread. –

Problemi correlati