F0 0F C7 C8

F0 0F C7 A C8  egy bájtok sorozata, amely érvénytelen gépi utasítást képez az x86 család processzorai számára . A Pentium MMX és Pentium OverDrive processzorokban egy hardverhiba miatt bármely jogosultsági szinten végrehajtott parancs a processzor lefagyásához vezetett , ami negatívan befolyásolta a rendszer egészének megbízhatóságát.

Leírás

Az utasítás egy parancs:

lock cmpxchg8b eax

Az operandus bármilyen regiszter lehet, az eax kivételével. A cmpxchg8b egy eax és edx regiszterpár tartalmának összehasonlítására szolgál valamely memóriaterület 8 bájtjával. Ez egy 8 bájtos eredményt próbál meg egy 4 bájtos regiszterbe helyezni.

Ez a parancs önmagában egyszerűen kivételt ad, azonban a zár előtaggal kombinálva (ez arra szolgál, hogy két processzor ne férhessen hozzá egyszerre ugyanahhoz a memóriaterülethez), a kivételkezelő nem hívódik meg, a processzor leállítja a megszakítások feldolgozását. , és újraindítás szükséges ahhoz, hogy működőképes állapotba kerüljön.

Ez az utasítás nem igényel különleges jogosultságokat , és az Intel processzorok nagy elterjedtsége miatt a probléma komoly volt. Bár nem okozott maradandó károsodást a hardverben, adatvesztést is okozhatott olyan esetekben, amikor egy kiürítetlen pufferrel végzett lemezírási művelet, megszakítás vagy más, nem atomi művelet során processzorhiba történt.

Megoldási módszerek

Lásd még

Linkek