Come segnalare i bug (errori)
Buone segnalazioni di errori sono un contributo molto valido per lo sviluppo di
un qualsiasi progetto software. Ma proprio come nello scrivere un buon
software, scrivere buoni rapporti sui problemi richiede dell'impegno. Per favore
considera che molti sviluppatori sono estremamente impegnati e ricevono immensi
volumi di email. Perciò, mentre da un lato il tuo feedback è cruciale per
migliorare MPlayer e molto apprezzato, per favore
cerca di capire che devi fornire tutte le
informazioni che chiediamo e seguire fedelmente le istruzioni qui documentate.
Come segnalare i bug di sicurezza (errori)
Nel caso in cui tu abbia trovato un bug pericoloso e vuoi fare la cosa giusta e
lasciarcelo correggere prima di sfruttarlo, saremmo felici di avere la tua
segnalazione di sicurezza a
security@mplayerhq.hu.
Per favore aggiungi nell'oggetto [SECURITY] o [ADVISORY].
Assicurati che il rapporto contenga l'analisi completa e dettagliata del bug.
L'invio di una correzione è decisamente apprezzato.
Per piacere non ritardare la segnalazione per scrivere un exploit che la provi,
puoi inviarlo eventualmente con un'altra mail.
Come correggere i bug
Se pensi di avere le capacità necessarie, sei esortato a provare a correggere
il bug per conto tuo. O forse lo hai già fatto? Leggi per favore
questo breve documento per scoprire
come far sì che il tuo codice venga incluso in
MPlayer. Le persone sulla mailing list
MPlayer-dev-eng
ti aiuteranno se avrai dei dubbi.
Come fare delle prove retroattive usando Subversion
Un problema che può capitare delle volte è 'prima funzionava, ora non
funziona più...'.
C'è una procedura passo passo per cercare di scoprire dove il problema si sia
presentato. Non è destinata agli utenti
casuali.
Per prima cosa, dovresti scaricare l'alberatura dei sorgenti di MPlayer da
Subversion. Le istruzioni si possono trovare nella
sezione su Subversion nella pagina dei download.
Troverai ora un immagine dell'archivio Subversion dentro alla directory
mplayer/, dal lato client.
Ora aggiorna questa immagine alla data che desideri:
cd mplayer/
svn update -r {"2004-08-23"}
Il formato della data è YYYY-MM-DD HH:MM:SS.
Usando questo formato di data ti garantisce di essere in grado di estrarre le
path in base alla data in cui sono state applicate, come
nell'archivio
MPlayer-cvslog.
Ora procedi come per un normale aggiornamento:
./configure
make
Per chi sta leggendo e non è un programmatore, il modo più veloce di trovare
il punto dove si è presentato il problema è effettuare una ricerca binaria
— che significa cercare la data della 'rottura' dividendo ripetutamente a
metà l'intervallo di ricerca.
Per esempio, se il problema si è presentato nel 2003, inizia da metà anno,
poi chiediti "C'è già il problema qui?".
Se sì, retrocedi fino al primo di aprile; se no, vai al primo di ottobre, e
così via.
Se hai tanto spazio libero sul disco rigido (una compilazione completa occupa
attualmente 100 MB, e circa 300-350 MB se si abilitano i simboli di debug),
copiati la versione funzionante più vecchia prima di aggiornarla; questo ti
farà risparmiare tempo se devi retrocedere.
(Solitamente bisogna eseguire 'make distclean' prima di ricompilare una versione
precedente, perciò se non ne hai una salvata, dovrai ricompilare tutto quanto
quando ritorni alla verisone attuale.)
Dopo aver trovato il giorno in cui è nato l'errore, continua a cercare usando
l'archivio mplayer-cvslog (ordinato per data) e un più preciso aggiornamento
su svn con ora, minuto e secondo:
svn update -r {"2004-08-23 15:17:25"}
Questo ti permetterà di trovare facilmente la patch esatta che lo ha generato.
Se trovi la patch che è stata la causa del problema, hai quasi vinto;
fai un rapporto su
MPlayer Bugzilla o
iscriviti a
MPlayer-users
e postalo là.
C'è anche la possibilità che l'autore intervenga consigliando una correzione.
Puoi anche controllare attentamente la patch fino a quando la costringi a
rivelarti dove stia il bug :-).
Come segnalare i bug
Per prima cosa per favore prova la versione Subversion di
MPlayer più recente visto che in essa il tuo bug
potrebbe già essere stato risolto. Lo sviluppo avanza velocemente, la maggior
parte dei problemi nei rilasci ufficiali sono segnalati in pochi giorni o poche
ore, perciò parti solo da Subversion per
segnalare i bug. Ciò include i pacchetti compilati di
MPlayer. Le istruzioni per Subversion si possono
trovare in fondo a
questa pagina o nel
README. Se ciò non ti è stato di aiuto, per favore fai riferimento
al resto della
documentazione. Se il tuo problema è sconosciuto oppure non risolvibile con le
nostre indicazioni, allora per favore segnala il bug.
Per piacere non inviare segnalazioni di bug ai singoli sviluppatori in privato.
Questo è un lavoro di comunità e quindi ci possono essere varie persone
interessate ad esso. Alcune volte altri utenti hanno già avuto i tuoi problemi
e sanno come aggirare un problema anche quando è un bug nel codice di
MPlayer.
Per favore descrivi il tuo problema il più dettagliatamente possibile. Fai un
piccolo lavoro di ricerca per evidenziare le circostanze in cui succede il
problema. Il bug si presenta solo in alcune occasioni? E' specifico per certi
file o tipi di file? Capita solo con un codec e è indipendente dal codec? Puoi
riprodurlo con tutti i driver di uscita? Più informazioni fornisci, maggiori
sono le nostre possibilità di correggere il tuo problema. Per favore non
dimenticare di includere anche le importanti informazioni richieste qui sotto,
altrimenti non saremo in grado di diagnosticare il problema.
Una guida eccellente e ben scritta su come fare domande in forum pubblici è
How To Ask Questions The Smart Way
(Come porre domande in modo intelligente)
di Eric S. Raymond.
Ce n'è un'altra chiamata
Come
segnalare bug efficacemente
di Simon Tatham.
Se segui queste linee guida dovresti poter ottenere aiuto.. Ma per favore tieni
conto che tutti noi seguiamo le mailing list volontariamente nel tempo libero.
Siamo molto occupati e non possiamo garantire che otterrai una soluzione per il
tuo problema o anche solo una risposta.
Dove segnalare i bug
Iscriviti alla mailing list MPlayer-users:
e invia il tuo rapporto sul bug a
dove puoi discuterlo.
Se preferisci puoi invece usare il nostro bel nuovo
Bugzilla.
La lingua di questa lista è l'inglese.
Per favore segui gli standard delle
Linee guida della Netiquette
e non inviare email in HTML ad alcuna delle
nostre mailing list. Verrai semplicemente ignorato bandito. Se non sai cosa sia
una mail in HTML o perché sia il male, leggi questo
buon documento.
Ti spiega tutto in dettaglio e contiene le istruzioni per disabilitare l'HTML.
Inoltre nota che non rispondiamo in CC (copia carbone) alle persone, quindi è
una buona idea iscriversi per poter effettivamente ricevere la risposta.
Cosa riportare
Potrebbe servire che tu includa nel tuo rapporto sul bug registrazioni,
configurazioni o file di esempio. Se alcune di queste cose sono abbastanza
grandi, è meglio caricarle sul nostro
server FTP in
un formato compresso (si preferiscono gzip e bzip2) e inserisci nel rapporto
solo il nome e il percorso del file. Le nostre mailing list hanno un limite
sulla dimensione di 80k, se hai qualcosa di più grande devi comprimerlo o
caricarlo.
Informazioni di Sistema
La tua distribuzione Linux o il sistema operativo e la versione, per es.:
Red Hat 7.1
Slackware 7.0 + pacchetti sviluppo dalla 7.1 ...
La versione del kernel:
uname -a
La versione di libc:
ls -l /lib/libc[.-]*
Le versioni di gcc e di ld:
gcc -v
ld -v
La versione di binutils:
as --version
Se hai dei problemi con la modalità a schermo intero:
Il tipo di gestore di finestre e la versione
Se hai dei problemi con XVIDIX:
La profondità colore di X:
xdpyinfo | grep "depth of root"
Se i bug sono solo nella GUI:
La versione di GTK
La versione di GLIB
La situazione della GUI in cui il bug si presenta
Hardware e driver
Informazioni CPU (questo funziona solo in Linux):
cat /proc/cpuinfo
La marca della scheda video ed il modello, per es.:
ASUS V3800U chip: nVidia TNT2 Ultra pro 32MB SDRAM
Matrox G400 DH 32MB SGRAM
Il tipo di driver video & la versione, per es.:
X built-in driver
nVidia 0.9.623
Utah-GLX CVS 2001-02-17
DRI from X 4.0.3
Il tipo di scheda video & driver, per es.:
Creative SBLive! Gold with OSS driver from oss.creative.com
Creative SB16 with kernel OSS drivers
GUS PnP with ALSA OSS emulation
Se hai dei dubbi includi l'emissione di lspci -vv su
sitemi Linux.
Problemi del configure
Se ricevi degli errori eseguendo ./configure, o se fallisce
la rilevazione automatica di qualcosa, leggi config.log.
Puoi travarci la soluzione, per esempio varie versioni della stessa libreria
mescolate sul tuo sistema, o hai dimenticato di installare il pacchetto di
scviluppo (quelli con il suffisso -dev). Se pensi ci sia un bug, includi
config.log nel tuo rapporto sul bug stesso.
Problemi di compilazione
Per favore includi questi file:
config.h
config.mak
Problemi in riproduzione
Per favore includi l'output di MPlayer al livello
di verbosità 1, ma ricorda di
non troncare tale output quando lo incolli
nella tua mail. Agli sviluppatori servono tutti i messaggi per diagnosticare
correttamente un problema. Puoi redirigere l'output in un file in questo modo:
mplayer -v options filename > mplayer.log 2>&1
Se il tuo problema è specifico per uno o più file,
allora per favore carica quello/i incriminato/i in:
Carica anche un piccolo file di testo con lo stesso nome di base del file, con
un'estensione .txt. Descrivi il problema che hai con quel particolare file e
includi il tuo indirizzo email così come ll'ouptut di
MPlayer all livello 1 di verbosità.
Solitamente i primi 1-5 MB di un file sono abbastanza per riprodurre il
problema, ma per esserne certi ti chiediamo di fare:
dd if=tuo_file of=piccolo_file bs=1024k count=5
Questo copierà i primi 5 mega di 'tuo_file'
e li scriverà su 'piccolo_file'. Dopo prova
di nuovo con il file piccolo e se il problema si presenta ancora per noi è
sufficiente. Per piacere non inviare mai questi
file via mail! Caricali sull'FTP, e manda solo il percorso/nome del file nel
server FTP. Se il file è raggiungibile in rete, allora è sufficiente inviare
l'URL preciso.
Crash
Devi eseguire MPlayer dentro a gdb
e mandarci l'output completo oppure se hai un core dump
del crash puoi ricavare informazioni utili dal Core file. Qui spiega come:
Come conservare le informazioni di un crash riproducibile
Ricompila MPlayer con il codice di debug abilitato:
./configure --enable-debug=3
make
e poi esegui MPlayer da dentro gdb usando:
gdb ./mplayer
Ora sei dentro gdb, Scrivi:
run -v opzioni-per-mplayer nomefile
e riproduci il tuo crash. Appena ci sei riuscito, gdb ti ripresenterà il
prompt dei comandi, dove devi digitare
bt
disass $pc-32 $pc+32
info all-registers
Come ricavare informazioni significative da un core dump
Genera il file di comandi seguente:
bt
disass $pc-32 $pc+32
info all-registers
Poi lancia semplicemente questo comando:
gdb mplayer --core=core -batch --command=file_comandi > mplayer.bug
So quello che sto facendo...
Se hai generato un rapporto adeguato sul bug seguendo i passi suddetti e sei
certo che sia un bug in MPlayer e non un problema
del compilatore o di un file danneggiato, se hai già letto la documentazione
non sei riuscito a trovare una soluzione, i tuoi driver audio sono OK, allora
potresti voler iscriverti alla lista MPlayer-advusers e inviare lì il tuo
rapporto per ottenere una riposta migliore e più rapida.
Renditi per favore conto che se invii lì domande da niubbo o domande che hanno
già una risposta nel manuale, sarai ignorato o alimenterai un flame, invece
di ottenere una risposta adeguata. Non generare flame contro di noi e iscriviti
a -advusers solo se sai davvero cosa stai facendo e senti di essere un utente
avanzato di MPlayer o uno sviuppatore. Se rientri in
questi ranghi non dovrebbe esserti difficile scoprire come iscriverti...