# 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 HTTP 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...