Delphi World - Win9X.Синий экран при делении на ноль (FPU) на процессорах AMD
Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
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, и поэтому мы в ней этого сбоя не видим.

Проект Delphi World © Выпуск 2002 - 2017
Автор проекта: Эксклюзивные курсы программирования