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

Re: OpenSSL: Altro bug



Ciao Davide,

purtroppo anche un programma di una sola istruzione potrebbe a volte produrre un risultato inatteso.

Nella sua evoluzione è coinvolta una montagna di software che può trovarsi in una enumerabile quantità stati diversi: per questo non puoi predire che produrrà sempre il risultato previsto, anche se "per ora" lo fà.

Potresti scommettere che "a.sh" non faccia correttamente niente per il numero esatto di volte in cui viene invocato? Per esempio, se il programma "a.sh" venisse lanciato n volte ad altissima frequenza, potrebbe accadere che alcuni caratteri di input vengano persi perchè il buffer dello stdin in certi momenti è pieno e non riceve e in questo caso il risultato sarebbe imprevedibile: invece che "a.sh" arrivare all'interprete il comando "a.s" e mandare in esecuzione il programma "a.s", qualsiasi cosa faccia questo ipotetico programma. Più verosimilmente perderebbe per intero il comando ma sarebbe un errore comunque.

Non importa se poi l'errore è del tuo comando o della shell o di chissà cosa: il fatto è che il sistema, nel suo complesso, può produrre risultati diversi da quelli che ci aspettiamo.

Non voglio dire che l'esempio suddetto sia effettivamente reale (anche se meriterebbe rifletterci): voglio solo dire che la complessità del software non è completamente dominabile e che anche in questo campo si procede per errori e correzioni come in qualsiasi altro ambito scientifico.

E' un problema del software "tout court", a prescindere se proprietario o libero.

Luciano

Il 09/06/2014 21:49, Davide Prina ha scritto:
ahi, ahi, ahi... top quoting... questo è male ;-)

fare il top quoting impedisce una corretta lettura del discorso e causa una difficile risposta.

On 09/06/2014 09:30, franchi wrote:

Non esiste software senza bugs.
--------------------------------------------
Empiricamente è dimostrabile: mostrami un programmatore che asserisce di
aver scritto un software senza errori e io ti mostro un ignorante (nel
senso che ignora almeno una parte di cosa ha scritto).

io! ;-)

il programma che termina ritornando 0 :-)

----- a.sh -----
#!/bin/bash

exit 0
----- end ---------

Gli errori sono dimostrabili

dipende da cosa definisci per errore :-) e per chi è un errore :-)
Tieni conto che molti fanno (facevano?) programmi automatici per la ricerca di errori e pubblicano cose del tipo: analizzati i sorgenti del programma X e trovati 1.000.000 bug. Poi vai a leggere tra le righe e scopri che si rifanno ai programmatori per la verifica se quelli trovati sono effettivamente bug :-) e poi scopri che il 99,9% dei bug trovati in realtà non lo sono :-) In passato articoli come questo erano usati per indicare che il software libero non era all'altezza di quello proprietario...

la correttezza mai

$ if [[ $(./a.sh) -eq 0 ]]; then echo 1; else echo 2; fi
1

$ if [[ ! $(./a.sh) -eq 0 ]]; then echo 1; else echo 2; fi
2

:-)

meglio dire che non esiste un metodo automatico che possa essere usato per dimostrare la correttezza di un software qualsiasi.

Quindi, anche epistemologicamente, direi che il software (qualsiasi
software) deve essere considerato errato a priori.

questo non è corretto.
Se hai fatto l'esame di metodi devi aver studiato che non esiste un software che è sempre errato.

Mi ricordo che in metodi c'erano esercizi divertenti, come creare un programma che stampa sé stesso come output :-)

Ciao
Davide



Reply to: