Bylo zawieszanie. Jest patch na pentium bug

Autor: Grzesio (____at_friko2.onet.pl)
Data: Mon 12 Jan 1998 - 09:47:57 MET


Troche madrych rzeczy przeczytanych w Sieci.
Pentium bug polega na zablokowaniu obslugi bledow i nastepnie wymuszeniu
bledu przez przeslanie osmiu bajtow do czterobajtowego rejestru. W sumie
procesor zachowuje sie tak, jak go programista prosi;-) : nie obsluguj
bledow i zrob bledna operacje. Jest to oczywisty blad.
Teraz o patchu:
Bledy takie jak przeslanie osmiu bajtow do czterobajtowego rejestru
obsluguje jeden z wyjatkow procesora (chyba nr 3??). Sa tez rozne inne
wyjatki i np nr 7 (tez nie jestem pewny, a jezeli ktos chce to wiedziec
dokladnie to mu poszukam) odpowiada za probe odczytu z nieprzydzielonej
pamieci. Stad metoda na patcha: umieszcza sie tablice wyjatkow na granicy
dwoch obszarow pamieci, a potem pierwszy z nich deklaruje sie jako
nieprzydzielony, a drugi normalnie przydziela. Wywolanie przez brzydkiego
programiste wyzej opisanych komend spowoduje, ze procesor nie obsluzy
bledu, ALE SPRAWDZI ADRES JEGO OBSLUGI. Ze wzgledu na dziwne umieszczenie
tablicy wyjatkow siegnie do nieprzydzielonej pamieci, co oczywiscie wywola
wyjatek nr 7. Wyjatek nr 7 zostanie normalnie wykonany, a w jego obsludze
tworcy systemu powinni umiescic kod sprawdzajacy co tak naprawde wywolalo
ten wyjatek (nie musi on przeciez byc tylko z powodu Pentium buga) i zajac
sie niedopuszczeniem do uaktywnienia sie Pentium buga. Z opisu Intela
wynika, ze wyjatek siegania do nieprzydzielonej pamieci ma wyzszy priorytet
niz jakikolwiek inny, ktory z powodu umieszczenia tablicy wyjatkow na
granicy obszarow moglby wystapic.

                                                Grzesio



To archiwum zostało wygenerowane przez hypermail 2.1.7 : Tue 18 May 2004 - 16:55:22 MET DST