Re: Migliorare Debian e il software libero: trovare bug con valgrind e scrivere le patch
On 28/11/20 17:47, Marco Bodrato wrote:
In conclusione, concordo con Davide sul fatto che valgrind è un ottimo
strumento.
ho scoperto però che:
1) non tutto è ancora stato gestito, ci sono "chiamate" che non sono
ancora implementate e questo può limitarti nell'individuare problemi.
Ad esempio le syscall... che naturalmente cambiano con le nuove versioni
di Linux o altro kernel e quindi è un lavoro continua starci dietro.
Per esempio:
$ valgrind gedit
[...]
--20000-- WARNING: unhandled amd64-linux syscall: 315
--20000-- You may be able to write your own handler.
--20000-- Read the file README_MISSING_SYSCALL_OR_IOCTL.
--20000-- Nevertheless we consider this a bug. Please report
--20000-- it at http://valgrind.org/support/bug_reports.html.
[...]
Come si vede si può scriversi il proprio handler e quindi, in teoria,
essere autosufficienti.
Per un'altra syscall ho visto che era stata segnalata la mancanza agli
sviluppatori di valgrind forse 1-2 anni fa, se non di più, ora non
ricordo, e solo ora hanno fatto il commit (che se non erro è stato fatto
poco dopo il commit che sarà usato per la prossima versione... e quindi
questa gestione finirà tra due versione di valgrind). Anche se questa
syscall, da quello che ho letto era abbastanza complicata rispetto alle
altre...
2) in alcuni casi ho visto che salta un "passaggio", probabilmente
perché vede che le chiamate sono simili e le accorpa. Però questo è
facilmente individuabile e identificabile facilmente.
3) le regole di soppressione, per i falsi positivi, mi sembrano non più
mantenute. Questo invece è un grosso problema perché ti vengono
segnalati quando esegui valgrind e devi poi essere tu a scoprire che
sono falsi positivi (per alcuni sono talmente complessi che lo si scopre
cercando su internet). Per ora per un caso mi sono scritto la mia regola
di soppressione.
Ho visto che ci sono anche queste regole di soppressione:
$ ls -l /usr/lib/valgrind/*.supp
che però non vengono usate in modo predefinito, non ho guardato se la
mia regola è qui presente e per ora queste non gli ho detto di usarle
quando eseguo valgrind.
In definitiva, sui primi due casi analizzati sono stato fortunato perché
erano abbastanza semplici.
Ho fatto anche una terza segnalazione, ma ci ho messo molto più tempo e
non sono stato in grado di suggerire una patch perché l'argomento non lo
conosco. L'unica cosa che sono stato in grado di segnalare è il valore
che assumevano determinate variabili con la mia configurazione
hardware/software, compreso il vettore usato nella parte incriminata, e
il motivo del crash finale.
Quindi valgrind è uno strumento eccellente e sui casi semplici ti
permette di identificare immediatamente il problema senza dover fare
debugging, ma guardando solo poche linee di codice sorgente. Per i casi
più complessi invece è d'aiuto, ma un po', o un bel po', di debugging lo
devi fare, per lo meno per capire cosa causa del motivo del problema...
poi capire come risolverlo può essere un altro discorso ancora più
complesso.
Anche se a volte capita di litigarci e anche se evidenzia solo una
specifica categoria di potenziali problemi.
come una sola categoria di problemi?
Intendi dire solo problemi relativi all'uso della memoria?
Quali altre categorie di problemi vorresti venissero ricercate?
Ciao
Davide
--
Strumenti per l'ufficio: https://www.libreoffice.org
GNU/Linux User: 302090: http://counter.li.org
Non autorizzo la memorizzazione del mio indirizzo su outlook
Reply to: