Segnalare un bug
Contents
- Il bug è già noto?
- Bug Report (segnalazione di bug) o Feature Request (richiesta di funzionalità)?
- Come posso segnalare un bug?
- Stato del bug ==
- Come compilare un server MariaDB che contenga informazioni di debug ==
- Esempio di un build di debug ==
- Cosa fare se dopo aver installato un binario di debug si ottiene un crash ==
Linee guida generali su come segnalare i bug di MariaDB.
Il bug è già noto?
Prima di tutto, si controlli se il bug è già presente nel database dei bug di MariaDB o nel database dei bug di MySQL (se il bug è già stato segnalato per MySQL, non c'è alcun bisogno di segnalarlo per MariaDB).
Se si trova il bug in uno dei due database, per favore si aggiunga un commento per dire che si è riscontrato il bug, insieme a qualsiasi informazione aggiuntiva che possa aiutarci a risolvere il problema.
Se il bug non è stato ancora segnalato, allora si inserisca una segnalazione.
Bug Report (segnalazione di bug) o Feature Request (richiesta di funzionalità)?
Le richieste di nuove funzionalità non sono bug report. Esse devono essere inserite nel Worklog.
Come posso segnalare un bug?
Il modo più semplice per segnalare un nuovo bug è utilizzare lo script mysqlbug
, che è distribuito con MariaDB. Solitamente si trova nella directory bin/
o scripts/
. Si avvii lo script, si risponda alle domande e si invii il bug. (Esso verrà inviato alla lista maria-developers di launchpad.net).
Per bug più complessi, ecco le informazioni di cui gli sviluppatori hanno bisogno per risolvere il problema. Più si è precisi, più facilmente gli sviluppatori potranno riprodurre il bug, e più velocemente verrà risolto.
Una buona segnalazione contiene:
- L'ambiente (Sistema operativo, hardware e versione di MariaDB) nel quale si è verificato l'errore.
- Qualsiasi informazione di contorno (stack trace, tabelle...).
- Un test case o un altro modo per riprodurre il bug. Questo dovrebbe essere, se possibile, nel formato di mysqltest. Si veda mysqltest/README per ulteriori informazioni.
- Se non è possibile fornire un test case, sarebbe di grande aiuto fornire un core dump e il binario corrispondente.
Se il bug è presente solo in MariaDB, lo si segnali nel database dei bug di MariaDB.
Se invece è anche in MySQL, lo si archivi anche nel database dei bug di MySQL.
Stato del bug
In launchpad, i vari stati che un bug può assumere sono:
Stato | Descrizione |
---|---|
Incomplete | Si necessitano ulteriori informazioni per risolvere il problema |
Invalid | Non è un bug (Feature request?) |
Won't Fix | Il bug non verrà risolto |
In Progress | Uno sviluppatore sta già lavorando concretamente per risolverlo |
Fix Committed | Il fix è stato inserito in un branch principale |
Fix Released | Il fix è stato inserito in un branch principale |
Il normale processo di soluzione dei bug è il seguente:
"In Progress" -> "Fix Released"
Gli sviluppatori che desiderano distinguere se il bug è stato solo inserito in un branch principale, o se invece è già stato rilasciato in un binario, possono usare:
"In Progress" -> "Fix Committed" -> "Fix Released"
Tuttavia in questo caso lo sviluppatore deve assicurarsi che quando un binario viene rilasciato lo stato del bug venga aggiornato.
Come compilare un server MariaDB che contenga informazioni di debug
Ecco le istruzioni su come compilare mysqld in modo tale che contenga tutte le informazioni di cui gli sviluppatori necessitano per risolvere il problema:
- Si aggiunga l'opzione
--core
al file /.my.cnf o /etc/my.cnf sotto l'etichetta [mysqld]. - Si scarichi il codice di MariaDB più recente da bzr.
- Si compili MariaDB con il flag di compilazione -g (su Unix). Gli script nella directory di BUILD lo fanno automaticamente.
- Si arresti il vecchio server mysqld
- Si installi il mysqld appena compilato
- Si riavvii mysqld
Compilare con il flag -g non dovrebbe causare rallentamenti sensibili nel server.
Esempio di un build di debug
Ecco un esempio di come compilare (presumendo che si stia utilizzando hardware AMD o Intel):
cd directory-sorgenti-mariadb ./BUILD/compile-pentium-max make ./client/mysqladmin shutdown mv directory-installazione-mariadb/mysqld directory-installazione-mariadb/mysqld-old cp sql/mysqld directory-installazione-mariadb/mysqld 'restart mysqld'
Naturalmente si può anche usare il comando make install, ma usando il modo qui riportato sarà possibile ritornare al vecchio binario.
Se si ottengono errori riguardanti un numero errato di messaggi di errore, si può risolvere il problema copiando il file della lingua da sql/share al posto di quello in uso (è un'operazione ragionevolmente sicura).
cp sql/share/english/* mariadb-install-dir/share/mysql/english
Cosa fare se dopo aver installato un binario di debug si ottiene un crash
I passaggi sono i seguenti:
- Si crei un file README che descriva il problema. (Si può usare lo script mysqlbug, che genera un modello da usare).
- Si crei un file tar che contiene il core, il binario mysqld e il file README. Se possibile, si aggiunga qualsiasi file del database che possa aiutare a riprodurre l'errore!
sh> tar cvfz /tmp/mariadb-bug-'descrizione-breve'.tgz mariadb-data-dir/core* mariadb-install-dir/libexec/mysqld README
- Lo si invii sul server sicuro di MariaDB (la directory private non è accessibile da persone esterne a Monty Program Ab)
sh> ftp -a ftp.askmonty.org ftp> cd private ftp> binary ftp> put /tmp/mariadb-bug-'descrizione-breve'.tgz ftp> quit
- Per poter seguire gli sviluppi, si crei anche una segnalazione su Launchpad. Dovrebbe essere facile, basandosi sulle informazioni nel file README.
Se si necessita di aiuto durante queste operazioni, se ci si vuole assicurare che il bug venga risolto con un'alta priorità, o se si desidera che qualcuno acceda al proprio sistema per individuare il problema, è possibile acquistare un contratto di supporto da Monty Program o utilizzare i loro servizi di consulenza.