Newsgroup: it.comp.os.linux.sys
Titolo: Problemi con scheda SMC: trovata la soluzione, ed e' preoccupante

Tempo fa ho inviato un messaggio al gruppo chiedendo aiuto su un problema di
scheda di rete,
ho scambiato alcune battute con thorin, promettendogli di informarlo se e
come fossi riuscito
a risolvere il problema. Riprendo un thread ormai freddo, con le spoglie che
risalgono
ormai ad una settimana fa. Non ripeto i particolari gia' esposti in
precedenza.
Ci sono riuscito, e la soluzione e', a mio parere, preoccupante. Per chi ha
voglia di
leggermi...
Il problema e' che, aggiornando una distribuzione RH 6.2 (compilatore egcs
1.1.2, se
non sbaglio, comunque ancora un compilatore egcs GNU standard) e passando
alla RH 7.3 con un kernel RedHat "ufficiale", il 2.4.18-3 (ed e' questa
subversion, appunto "-3" che a mio parere
e' una possibile fonte di problemi) la scheda in questione, una vecchia SMC
8216 ISA, non
PnP, insomma, proprio vecchia, smette di funzionare: fa ping su se' stessa
ma ogni pacchetto
che cerca di uscire sulla rete non viene inviato. La scheda e' sorda e muta:
non parla ne'
sente le altre macchine in rete, pur essendo configurata correttamente (e di
questo ne sono certo).
Non sono l'unico ad avere questo problema: notizie di malfunzionamenti di
questa scheda
erano frequenti nei gruppi di discussione, tutti indicavano piu' o meno lo
stesso tipo di
problema, notizie di malfunzionamenti che partivano da distribuzioni RH 7.0
per poi diventare
sempre meno frequenti fino ad oggi, e non perche' il problema veniva
risolto. Le proposte di
soluzione non davano risultati, ne' a coloro che avevano postato in passato
ne' a me; i post
diventavano sempre meno frequenti perche' la scheda diventava obsoleta e
nessuno se ne
curava piu': che importa se un pezzo di hardware vecchio di quasi otto anni
non funziona:
la soluzione proposta e' "Cambialo!", che e' una patch, non un fix.
Facendo alcuni tentativi con il compilatore C di RH 7.3 (gcc --version:
2.96) non riuscivo
ad ottenere nulla, anche cambiando il kernel e scricando da 
kernel.org
 la
versione non taroccata
da RH del kernel 2.4.18. Invece compilando un kernel della serie 2.2 con
egcs riuscivo
a farla funzionare.
Ho risolto il problema cosi:
- ho disinstallato il compilatore gcc-2.96 e tutto cio' che ad esso era
collegato (essenzialmente
un compilatore FORTRAN), tenendo pero' (ovvio) le glibc (2.2.5)
- ho installato egcs (sono i pacchetti "compat-egcs...")
- ho scaricato ed installato il compilatore GNU gcc 3.1 (un compilatore C mi
serviva per portare
a termine i primi stage della installazione del C: per questo egcs)
- ho disinstallato nuovamente egcs
- ho compilato il kernel di 
kernel.org
 con il gcc (--version: 3.1)
- e tutto funziona perfettamente.
E' per questo che ritengo che questa soluzione sia preoccupante: a parte il
fatto che compilare,
installare e testare il gcc su un PentiumPro a 180 MHz e' un lavoro di un
giorno intero, piu'
una mattinata per compilare il kernel, cio' che ho fatto a mio parere dice
che:
a) o il sorgente di RH e' taroccato assai male (ma non credo che il problema
sia qui: stessi
risultati anche con altri kernel di distribuzioni meno recenti ma tutte
della serie 7.x)
b) oppure, ben piu' grave, il compilatore C RH (gcc 2.96, che faccio notare
NON ESISTE
come compilatore su 
gnu.org
: il 2.96 e' una versione non standard, non
supportata e che a suo
tempo provoco' piu' di una discussione) non funziona. Ma se non funziona su
un modulo di
una scheda di rete (pur con sorgenti pressoche' immutati da cinque-sei anni
ad oggi) non e'
escluso che non funzioni anche da altre parti. Quali? Che garanzie ho su un
compilatore che,
mi sembra, ha dimostrato almeno a me di non funzionare a dovere?
Sono curioso di avere pareri e magari conferme o smentite a quaonto ho
esposto.

 esposto.
I miei 0.2 cents..
-- 
- Le scaglie della mia corazza sono come scudi dieci volte piu' potenti
  i miei denti sono spade, i miei artigli lance, lo sferzare della 
  mia coda una saetta, le mie ali un uragano ed il mio alito MORTE !

 esposto.
Guarda, ti posso confermare che il compilatore gcc ha qualche turba non
banale 
di troppo.
Faccio parte del gruppo di sviluppo di Squid, ed in particolare mi
occupo del suo 
port nativo su Windows, e mi capita quindi spesso di compilare lo stesso
codice C sulle 
piattaforme piu' disparate: Microsoft VC++, Cygwin con gcc 2.95.3,
Solaris 8 con gcc 2.95.3 e RHL 7.0 su Alpha con gcc RH 2.96 e ccc Compaq
6.4.9 per Alpha.
Ti elenco alcune perle:
Compilando i sorgenti di Squid con MS VC++ sono usciti fuori degli
errori del tipo:
Funzione dichiarata negli include in un modo, nel sorgente nell'altra, e
gcc, sia
Cygwin che RH, non faceva una piega !!!
Copilando la stessa cosa su Alpha con ccc, e' addirittura saltato fuori
un bug negli
include della glibc (!!!!), e di nuovo gcc non se ne accorgeva .....
Tralasciando i bachi noti della 2.95 relativi all'ottimizzazione (-O) su
Solaris, BSD, etc.
La cosa "divertente" e' che comunque Squid funzionava e che gli errori
che non venivano
riconosciuti erano vecchi di anni ....
Qualche volta mi viene il dubbio che gcc, nel produrre il codice,
sopperisca ad alcuni
suoi limiti con tecniche divinatorie ....
Saluti
GuidoS1966

 GuidoS1966
Saluti
--
Roberto Vadori
Politecnico di Torino - Dipartimento di Meccanica