Win9X.Синий экран при делении на ноль (FPU) на процессорах AMD
Автор: Ilya
При работе под Win98 в Дельфи 6 (возможно, и других) версии имеет место сбой программы с синим экраном (может и Дельфи выбить), если в программе происходит деление на ноль при операциях с плавающей точкой. Причем синий экран может возникнуть не в том месте, где произошла ошибка. Например, имеется программа, где она происходит, и обрабатывается в программе, но синий экран возникает после того, как прорисуется график, хотя расчеты ведуться одновременно с прорисовкой. В пропатченной версии дельфи возникает не всегда.. Ошибка будет во всех программах, запущеных на AMD K7 под управлением Win98. Остальные исключения обрабатываются правильно. Программа на процессорах Intel работала без сбоев.
Возможные пути борьбы - как в старину, проверять делители.. Нет возможности проверить, но вроде под win2000 ошибка не имеет места. WinMe, WinXP - не проверено.
PS - как мне кажется, это очень серьезный камень, хотя, похоже скорее имеет отношение к Win98, чем к Delphi.
КОММЕНТАРИЙ
Проверено: KT266(Athlon-1000)/Win98SE, Win2000. Под Win98 получаем синий экран с исключением 0E, а под Win2000 сбоев не наблюдается.
Ранее поступало много сообщений о подобных явлениях с процессорами K5 и K6, реже - Pentium. Вероятно, баг вызван тонкими отличиями процессоров в комбинации с чипсетами, которые приводят к исключению 0E (Page Fault) где-то в обработчике прерывания от сопроцессора в ядре операционной системы линии Win9X. Win2000 построена на совершенно другом ядре - NT, и поэтому мы в ней этого сбоя не видим.
|