Ларри Остерман: мой любимый баг — тот, что мы обнаружили на ICL PWS-400. Это была новая платформа от ICL (британская компания, куплена Fujitsu в 2002), и нашей задачей было портировать MS-DOS 4.1 на эту платформу. Проектом занимались пятеро — двое от Microsoft и трое от ICL.
Железо у PWS-400 было довольно необычное: например, программы реального режима могли постранично переключать банки памяти — за счёт этого приложения могли выполняться в фоновом режиме, не мешая одно другому.
Нас было пятеро разработчиков, тестировщиков у нас не было; поэтому мы тестировали новую систему всем, что попадётся под руку. Моим любимым «инструментом тестирования» была игра, которую Валори (жена) принесла с учёбы. Я не помню точно, какая это была игра; но каждый раз, когда я в неё играл и доходил до определённого места, машина вдруг перезагружалась.
Мы подключили к машине ICE (внутрисхемный эмулятор — устройство, позволяющее узнать, что происходит внутри и снаружи процессора), и обнаружили, что процессор получает сигнал перезагрузки извне. Так что как минимум, баг был не в коде.
Парни, собиравшие машину, взяли у меня ту игру, и стали разбираться.
Через пару дней они вернули игру и рассказали, что нашли неисправность. Оказалось, что дорожка к динамику проходила на материнской плате слишком близко к дорожке перезагрузки. Когда на динамик подавался сигнал определённого вида, электромагнитное излучение от первой дорожки наводило на второй дорожке достаточно сильное напряжение, чтобы процессор распознал его как сигнал к перезагрузке.
Мэтт Уильямс: мне запомнилась пара багов, сводивших меня с ума.
Первая история случилась в Нью-Йорк-Сити. К одному из компьютеров была подключена мышь, которая беспорядочно прыгала, стоило ей только провести по определённой части рабочего стола. Но это срабатывало не всегда. Через какое-то время мы обнаружили закономерность: мышь сходила с ума только в определённое время дня. И место на столе, в котором она сходила с ума, тоже двигалось со временем. Мы потратили уйму времени, прежде чем обнаружили причину происходящего. Но сначала расскажу о втором баге: они связаны один с другим, хотя их и разделяет около 5 лет.
К тому времени я переехал в Калифорнию и приобрёл подержанный автомобиль. Прежде чем отдать его мне, предыдущие хозяева рассказали о странной особенности магнитолы: ни с того ни с сего выплёвывать вставленный диск. Они несколько раз обращались в мастерскую по этому поводу, но неисправность не смогли найти, и механики просто заменили магнитолу на новую, такой же модели. Это не помогло: неисправность осталась.
Поездив на этой машине несколько месяцев, я обнаружил закономерность: магнитола выплёвывала диск, только когда я ехал в определённую сторону… и притом только в определённое время дня.
Так в чём же было дело? Оба раза виновато было солнце. У мыши был небольшой зазор между кнопками, и когда солнце светило на неё под определённым углом, свет попадал внутрь на фотопары и вызывал реакцию, как от вращающегося во все стороны шарика. Точно так же, когда солнце попадало сквозь окно в крыше в загрузочную щель магнитолы, — срабатывал датчик вставленного диска, и магнитола его выплёвывала.