[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: