Фольклор программистов и инженеров (часть 1)

Автор оригинала: Народное творчество
  • Перевод


Это подборка историй из интернета о том, как у багов иногда бывают совершенно невероятные проявления. Возможно, вам тоже есть что рассказать.

Аллергия автомобиля на ванильное мороженое


История для инженеров, которые понимают, что очевидное не всегда является решением, и что насколько бы факты ни казались неправдоподобными, это всё равно факты. В подразделение Pontiac Division корпорации General Motors поступила жалоба:

Пишу вам второй раз, и не виню вас в том, что вы не отвечаете, ведь это звучит безумно. У нашей семьи есть традиция: каждый вечер после ужина есть мороженое. Сорта мороженого каждый раз меняются, и поужинав, вся семья выбирает, какое мороженое нужно купить, после чего я еду в магазин. Недавно я купил новый Pontiac, и с тех пор мои поездки за мороженым превратились в проблему. Видите ли, каждый раз, когда я покупаю ванильное мороженое и возвращаюсь из магазина, машина не заводится. Если я приношу любое другое мороженое, машина заводится без проблем. Хочу задать серьёзный вопрос, вне зависимости от того, насколько глупо это прозвучит: «Что такого есть в Pontiac, из-за чего он не заводится, когда я приношу ванильное мороженое, но при этом легко заводится, если я приношу мороженое с другим вкусом?».

Как вы понимаете, президент подразделения отнёсся к письму скептически. Однако на всякий случай отправил инженера проверить. Тот был удивлён, что его встретил обеспеченный, хорошо образованный мужчина, живущий в прекрасном районе. Они договорились встретиться сразу после ужина, чтобы вдвоём съездить в магазин за мороженым. В тот вечер было ванильное, и когда они вернулись в машину, та не завелась.

Инженер приезжал ещё три вечера. В первый раз мороженое было шоколадным. Машина завелась. Во второй раз было клубничное мороженое. Машина завелась. На третий вечер он попросил взять ванильное. Машина не завелась.

Здраво рассудив, инженер отказался верить в аллергию автомобиля на ванильное мороженое. Поэтому договорился с владельцем машины, что он продолжит свои визиты, пока не найдёт решения проблемы. И попутно начал делать заметки: записывал всю информацию, время суток, сорт бензина, время приезда и возвращения из магазина, и т.д.

Вскоре инженер догадался: владелец машины тратил на покупку ванильного мороженого меньше времени. Причина была в раскладке товара в магазине. Ванильное мороженое было самым популярным и лежало в отдельном морозильнике в передней части магазина, чтобы его было легче найти. А все остальные сорта находились в задней части магазина, и на поиск нужного сорта и оплату уходило значительно больше времени.

Теперь вопрос был к инженеру: почему машина не заводилась, если с того момента, когда заглушили двигатель, проходило меньше времени? Поскольку проблемой стало время, а не ванильное мороженое, инженер быстро нашёл ответ: дело было в газовой пробке. Она возникала каждый вечер, но когда владелец машины тратил на поиск мороженого больше времени, двигатель успевал достаточно охладиться и спокойно заводился. А когда мужчина покупал ванильное мороженое, двигатель ещё оставался слишком горячим и газовая пробка не успевала рассосаться.

Мораль: даже совершенно безумные проблемы иногда бывают реальными.

Crash Bandicoot


Переживать такое болезненно. Как программист, ты привыкаешь обвинять свой код в первую очередь, во вторую, в третью… и где-то в десятитысячную очередь обвиняешь компилятор. И ещё ниже по списку уже обвиняешь оборудование.

Вот моя история о баге железа.

Для игры Crash Bandicoot я написал код для загрузки и сохранения на карту памяти. Для такого самодовольного разработчика игр это было словно прогуляться по парку: я считал, что работа займёт несколько дней. Однако в результате отлаживал код шесть недель. Попутно я решал и другие задачи, но каждые несколько дней на несколько часов возвращался к этому коду. Это была агония.

Симптом выглядел так: когда сохраняешь текущее прохождение игры и обращаешься к карте памяти, почти всегда всё проходит нормально… Но иногда операция чтения или записи завершается по таймауту без какой-либо очевидной причины. Короткая запись зачастую повреждает карту памяти. Когда игрок пытается сохраниться, он не только не сохраняется, но ещё и рушит карту. Блин.

Спустя некоторое время наш продюсер в Sony, Конни Бус, начала паниковать. Мы не могли отгрузить игру с таким багом, и спустя шесть недель я не понимал, в чём причина этой проблемы. Через Конни мы связались с другими разработчиками PS1: кто-нибудь сталкивался с подобным? Нет. Ни у кого не было проблем с картой памяти.

Когда у тебя нет идей по отладке, то практически единственным подходом остаётся «разделять и властвовать»: убираешь всё больше и больше кода из ошибочной программы, пока не остаётся сравнительно небольшой фрагмент, при работе которого до сих пор возникает проблема. То есть отрезаешь от программы по куску, пока не остаётся та часть, что содержит баг.

Но дело в том, что очень трудно вырезать куски из видеоигры. Как её запускать, если ты убрал код, эмулирующий гравитацию? Или отрисовывающий персонажей?

Поэтому приходится заменять целые модули заглушками, которые притворяются, что делают нечто полезное, а на самом деле выполняют что-то очень простое, что не может содержать ошибок. Приходится писать такие костыли, чтобы игра хотя бы работала. Это медленный и болезненный процесс.

Короче, я это сделал. Удалял всё новые и новые куски кода, пока не остался начальный код, который настраивает систему для запуска игры, инициализирует оборудование для отрисовки и т.д. Конечно, на этой стадии я не мог сделать меню сохранения и загрузки, потому что пришлось бы делать заглушку для всего кода, отвечающего за графику. Но я мог притвориться пользователем, который использует (невидимый) экран сохранения и загрузки и просит сохранить, а потом записать на карту памяти.

В результате у меня остался небольшой фрагмент кода, с которым всё ещё возникала вышеупомянутая проблема — но до сих пор это происходило случайным образом! Чаще всего всё работало нормально, но изредка возникали сбои. Я убрал почти весь код игры, но баг всё ещё жил. Это озадачивало: оставшийся код на самом деле ничего не делал.

В какой-то момент, вероятно, в три утра, мне в голову пришла мысль. Операции чтения и записи (ввода-вывода) подразумевают точное время выполнения. Когда работаешь с жёстким диском, картой памяти или Bluetooth-модулем, низкоуровневый код, отвечающий за чтение и запись, делает это в соответствии с тактовыми импульсами.

С помощью часов устройство, которое не связано напрямую с процессором, синхронизируется с исполняемым в процессоре кодом. Часы определяют частоту бодов — скорость передачи данных. Если с таймингами возникает путаница, то также путается либо оборудование, либо ПО, либо они оба. И это очень плохо, потому что данные могут повредиться.

А вдруг что-то в нашем коде путает тайминги? Я проверил всё, что с этим связано, в коде тестовой программы, и заметил, что мы задали программируемому таймеру в PS1 частоту 1 кГц (1000 тактов в секунду). Это довольно много, по умолчанию при запуске приставки он работает с частотой 100 Гц. И большинство игр использует именно эту частоту.

Энди, разработчик игры, задал таймеру частоту 1 кГц чтобы движения вычислялись точнее. Энди склонен к чрезмерности, и если мы эмулируем гравитацию, то делаем это настолько точно, насколько возможно!

Но что если ускорение таймера как-то повлияло на общий тайминг программы, а значит и на часы, которые регулируют частоту бодов для карты памяти?

Я закомментировал код с таймером. Ошибка больше не повторялась. Но это не означает, что мы её исправили, ведь сбой возникал случайным образом. А вдруг мне просто повезло?

Через несколько дней я снова экспериментировал с тестовой программой. Баг не повторялся. Я вернулся к полной кодовой базе игры и изменил код сохранения и загрузки так, чтобы программируемый таймер сбрасывался в исходное значение (100 Гц) перед обращением к карте памяти, а затем снова возвращался к 1 кГц. Сбоев больше не возникало.

Но почему так произошло?

Я снова вернулся к тестовой программе. Попробовал найти какую-то закономерность в возникновении ошибки при таймере в 1 кГц. В конце концов я заметил, что ошибка возникает, когда кто-то играет с контроллером PS1. Поскольку сам я редко это делал бы — зачем мне контроллер при тестировании кода сохранения и загрузки? — то я и не замечал этой зависимости. Но однажды один из наших художников ждал, когда я закончу тестирование, — наверняка в тот момент я ругался, — и нервно крутил контроллер в руках. Возникла ошибка. «Погоди, что?! Ну-ка сделай так снова!».

Когда я понял, что эти два события взаимосвязаны, то смог легко воспроизвести ошибку: начал записывать на карту памяти, пошевелил контроллер, испортил карту памяти. Для меня это выглядело как аппаратный баг.

Я пришёл к Конни и рассказал о своём открытии. Она передала информацию одному из инженеров, проектировавшему PS1. «Невозможно, — ответил он, — это не может быть аппаратной проблемой». Я попросил Конни устроить нам беседу.

Инженер позвонил мне, и мы поспорили с ним на его ломаном английском и моём (крайне) ломаном японском. Наконец я сказал: «Давайте я просто пришлю свою тестовую программу в 30 строк, при которой движение контроллера приводит к багу». Он согласился. Заявил, что это потеря времени, и что он ужасно занят работой над новым проектом, но уступит, потому что мы очень важный разработчик для Sony. Я подчистил свою тестовую программу и отправил ему.

На следующий вечер (мы были в Лос-Анджелесе, а он в Токио) он позвонил мне и смущённо извинился. Это была аппаратная проблема.

Я не знаю, в чём именно заключался баг, но, насколько я слышал в штаб-квартире Sony, если задать таймеру достаточно высокое значение, то это мешало компонентам на материнской плате поблизости от кристалла таймера. Одним из них был контроллер частоты бодов для карты памяти, который также задавал частоту бодов для контроллеров. Я не инженер, так что мог что-то напутать.

Но суть в том, что между компонентами на материнской плате возникали помехи. И при одновременной передаче данных через порт контроллера и порт карты памяти при таймере, работающем с частотой 1 кГц, биты пропадали, данные терялись, а карта повреждалась.

Сбойные коровы


В 1980-х мой ментор Сергей писал ПО для СМ-1800, советского клона PDP-11. Этот микрокомпьютер только что установили на ЖД-станции под Свердловском, важным транспортным узлом СССР. Новая система была спроектирована для маршрутизации вагонов и грузопотоков. Но в ней оказался досадный баг, который приводил к случайным сбоям и падениям. Падения возникали всегда, когда кто-то уходил вечером домой. Но несмотря на тщательное расследование на следующий день, при всех ручных и автоматических тестах компьютер работал корректно. Обычно это свидетельствует о состоянии гонки или каком-то ином баге конкурентности, который проявляется при определённых условиях. Устав от звонков поздней ночью, Сергей решил докопаться до сути, и первым делом понять, какие условия на сортировочной станции приводили к поломке компьютера.

Сначала он собрал статистику всех необъяснимых падений и построил график по датам и времени. Паттерн был очевиден. Понаблюдав ещё несколько дней, Сергей понял, что легко может спрогнозировать время будущих системных сбоев.

Вскоре он выяснил, что сбои возникали только тогда, когда на станции сортировали вагоны с крупным рогатым скотом из северной Украины и западной России, направлявшиеся на близлежащую скотобойню. Это само по себе было странно, ведь скотобойню снабжали хозяйства, находившиеся гораздо ближе, в Казахстане.

Чернобыльская АЭС взорвалась в 1986-м, и радиоактивные осадки сделали непригодными к обитанию прилегающие территории. Загрязнению подверглись обширные территории в северной Украине, Белоруссии и западной России. Заподозрив высокий уровень радиации в прибывающих вагонах, Сергей разработал метод проверки этой теории. Населению иметь дозиметры запрещалось, поэтому Сергей проставился нескольким военным на ЖД-станции. После нескольких порций водки ему удалось убедить солдата измерить уровень радиации в одном из подозрительных вагонов. Оказалось, что уровень в разы превышает обычные значения.

Мало того, что скот сильно фонил радиацией, её уровень был настолько велик, что это приводило к случайному выпадению битов в памяти СМ-1800, которая стояла в здании рядом со станцией.

В СССР возникала нехватка продуктов питания, и власти решили смешивать «чернобыльское» мясо с мясом из других областей страны. Это позволяло снизить общий уровень радиоактивности без потери ценных ресурсов. Узнав об этом, Сергей сразу же заполнил документы на эмиграцию. А падения компьютера прекратились сами собой, когда уровень радиации снизился со временем.

По трубам


Когда-то компания Movietech Solutions создала ПО для кинотеатров, предназначенное для учёта и продажи билетов и общего управления. DOS-версия флагманского приложения была довольно популярна среди небольших и средних сетей кинотеатров в Северной Америке. Поэтому не удивительно, что когда анонсировали версию под Windows 95, интегрированную с новейшими сенсорными экранами и киосками самообслуживания, а также оснащённую всевозможными средствами отчётности, она тоже быстро стала популярной. Чаще всего обновление проходило без проблем. ИТ-специалисты на местах устанавливали новое оборудование, мигрировали данные, и бизнес продолжался. За исключением случаев, когда не продолжался. Когда такое происходило, компания отправляла Джеймса по прозвищу «Чистильщик».

Хотя это прозвище намекает на гнусного типа, однако чистильщик — это лишь сочетание инструктора, установщика и мастера на все руки. Джеймс мог провести несколько дней у клиента, собирая все компоненты воедино, а затем ещё пару дней учил персонал пользоваться новой системой, решая любые возникающие проблемы с оборудованием и фактически помогая программному обеспечению пройти период становления.

Поэтому не удивительно, что в это суматошное время Джеймс пришёл утром в офис, и не успел дойти до своего стола, как его встретил руководитель, наполненный кофеином сверх обычного.

— Боюсь, тебе нужно как можно скорее отправиться в Аннаполис в Новой Шотландии. У них легла вся система, и после ночи совместной работы с их инженерами мы не можем понять, что произошло. Похоже, на сервере отказала сеть. Но только после того, как система проработала несколько минут.

— Они не вернулись к старой системе? — совершенно серьёзно ответил Джеймс, хотя мысленно он вытаращил глаза от удивления.

— Именно: у их айтишника «изменились приоритеты» и он решил уйти с их старым сервером. Джеймс, они установили систему на шести площадках и только что заплатили за премиальную поддержку, а их бизнес сейчас ведётся как в 1950-х.

Джеймс слегка выпрямился.

— Это другое дело. Ладно, приступаю.

Когда он прибыл в Аннаполис, то первым делом нашёл первый кинотеатр клиента, в котором возникла проблема. На взятой в аэропорту карте всё выглядело прилично, но окрестности нужного адреса выглядели подозрительно. Не гетто, но напоминали фильмы в жанре «нуар». Когда Джеймс припарковался у обочины в центре, к нему приблизилась проститутка. Учитывая размер Аннаполиса, она, скорее всего, была единственная на весь город. Её появление сразу же напомнило о знаменитом персонаже, который на большом экране предлагал секс за деньги. Нет, не о Джулии Робертс, а о Джоне Войте [намёк на фильм «Полуночный ковбой» — прим. пер.].

Отправив проститутку восвояси, Джеймс отправился к кинотеатру. Окрестности стали получше, но всё равно создавалось впечатление захудалости. Не то чтобы Джеймс слишком беспокоился. Он уже бывал в убогих местах. А это была Канада, в которой даже грабители достаточно вежливы, чтобы сказать «спасибо» после того, как отобрали ваш бумажник.

Боковой вход в кинотеатр находился в промозглой аллее. Джеймс подошёл к двери и постучал. Вскоре она заскрипела и приоткрылась.

— Вы чистильщик? — раздался изнутри хриплый голос.

— Да, это я… я приехал, чтобы всё исправить.

Джеймс прошёл в фойе кинотеатра. Вероятно, не имея другого выхода, персонал начал выдавать посетителям бумажные билеты. Это затрудняло финансовую отчётность, не говоря уже о более интересных подробностях. Но сотрудники встретили Джеймса с облегчением и немедленно отвели в серверную.

На первый взгляд всё было в порядке. Джеймс залогинился на сервер и проверил обычные подозрительные места. Никаких проблем. Однако из предосторожности Джеймс выключил сервер, заменил сетевую карту и откатил систему. Она моментально заработала в полном объёме. Персонал снова начал продавать билеты.

Джеймс позвонил Марку и сообщил о ситуации. Нетрудно предположить, что Джеймс может захотеть задержаться здесь и посмотреть, не произойдёт ли что-нибудь неожиданное. Он спустился по лестнице и начал расспрашивать сотрудников о произошедшем. Очевидно, что система перестала работать. Они её выключили и включили, всё заработало. Но спустя 10 минут система отвалилась.

Как раз в этот момент произошло нечто подобное. Внезапно система для продажи билетов начала выдавать ошибки. Сотрудники вздохнули и сгребли бумажные билеты, а Джеймс поспешил в серверную. С сервером всё выглядело хорошо.

Затем вошёл один из сотрудников.

— Система опять работает.

Джеймс был озадачен, ведь он ничего не сделал. Точнее, ничего такого, что заставило бы систему работать. Он разлогинился, взял телефон и позвонил в службу поддержки своей компании. Вскоре в серверную вошёл тот же сотрудник.

— Система лежит.

Джеймс взглянул на сервер. На экране танцевал интересный и знакомый узор из разноцветных форм — хаотично извивающиеся и переплетающиеся трубы. Все мы когда-то видели этот скринсейвер. Он был прекрасно отрисован и буквально гипнотизировал.


Джеймс нажал кнопку и узор исчез. Он поторопился к билетной кассе и по пути встретил возвращавшегося к нему сотрудника.

— Система опять работает.

Если можно мысленно сделать фейспалм, то именно это Джеймс и сделал. Скринсейвер. Он использует OpenGL. И поэтому во время работы потребляет все ресурсы серверного процессора. В результате каждое обращение к серверу завершается по таймауту.

Джеймс вернулся в серверную, залогинился и заменил скринсейвер с прекрасными трубами на пустой экран. То есть вместо скринсейвера, поглощающего 100 % ресурсов процессора, поставил другой, не потребляющий ресурсы. Затем подождал 10 минут, чтобы проверить свою догадку.

Когда Джеймс приехал в следующий кинотеатр, он задумался о том, как объяснить своему руководителю, что он только что пролетел 800 км, чтобы отключить скринсейвер.

Сбой в определённую фазу Луны


Правдивая история. Однажды возник программный баг, который зависел от фазы Луны. Там была маленькая подпрограмма, которая обычно использовалась в разных программах MIT для вычисления приближения к истинной фазе Луны. GLS встроила эту подпрограмму в программу на LISP, которая при записи файла выводила строку с временной меткой длиной почти 80 символов. Очень редко первая строка сообщения получалась слишком длинной и переходила на следующую строку. И когда программа потом читала этот файл, она ругалась. Длина первой строки зависела от точной даты и времени, а также от длины спецификации фазы в момент печати временной метки. То есть баг в буквальном смысле зависел от фазы Луны!

Первое бумажное издание Jargon File (Steele-1983) содержало образец такой строки, приводившей к описанному багу, однако наборщик «исправил» её. С тех пор это описывают как «баг фазы Луны».

Однако будьте осторожны с предположениями. Несколько лет назад инженеры из CERN (European Center for Nuclear Research) столкнулись с ошибками в экспериментах, проводившихся на Большом электрон-позитронном коллайдере. Поскольку компьютеры активно обрабатывают гигантское количество данных, генерируемых этим устройством, прежде чем показать результат учёным, многие предполагали, что ПО каким-то образом чувствительно к фазе Луны. Несколько отчаянных инженеров докопались до истины. Ошибка возникала из-за небольшого изменения геометрии кольца длиной 27 км в связи с деформацией Земли при проходе Луны! Эта история вошла в фольклор физиков как «Ньютоновская месть физике частиц» и пример связи простейших и старейших физических законов с наиболее передовыми научными концепциями.

Смывание в туалете останавливает поезд


Лучший аппаратный баг, о котором я слышал, был в скоростном поезде во Франции. Баг приводил к аварийному торможению состава, но только если на борту были пассажиры. При каждом таком случае поезд выводили из эксплуатации, проверяли, но ничего не находили. Затем его снова отправляли на линию, и он моментально аварийно останавливался.

Во время одной из проверок инженер, ехавший в поезде, пошёл в туалет. Вскоре он смыл за собой, БУМ! Аварийная остановка.

Инженер связался с машинистом и спросил:

— Что ты делал перед самым торможением?

— Ну, я притормаживал на спуске…

Это было странно, потому что при обычном курсировании поезд притормаживает на спусках десятки раз. Состав отправился дальше, и на следующем спуске машинист предупредил:

— Я собираюсь притормаживать.

Ничего не произошло.

— Что ты делал при последнем торможении? — спросил машинист.

— Ну… я был в туалете…

— Ну, тогда иди в туалет и сделай то, что делал, когда будем спускаться опять!

Инженер отправился в туалет, и когда машинист предупредил: «Я торможу», он спустил воду. Конечно же, поезд тут же остановился.

Теперь они могли воспроизвести проблему и нужно было найти причину.

Через две минуты они заметили, что кабель дистанционного управления торможением двигателя (у поезда было по одному двигателю в обоих концах) отсоединён от стенки электрошкафа и лежит на реле, управляющем соленоидом туалетной заглушки… Когда реле включалось, оно создавало помехи в тормозном кабеле, и система защиты от сбоев просто включала аварийное торможение.

Шлюз, ненавидевший FORTRAN


Несколько месяцев назад мы заметили, что сетевые подключения к сети на материке [дело было на Гавайях] становились очень-очень медленными. Это могло длиться 10-15 минут, а затем неожиданно возникало снова. Спустя некоторое время мой коллега пожаловался мне, что подключения к сети на материке вообще не работают. У него был какой-то код на FORTRAN, который нужно было скопировать на машину на материке, но это не получалось, потому что «сеть не держалась достаточно долго, чтобы завершилась загрузка по FTP».

Да, получалось так, что отказы сети возникали тогда, когда коллега пытался передать по FTP файл с исходным кодом на FORTRAN на машину на материке. Мы попробовали архивировать файл: тогда он спокойно копировался (но на целевой машине не было распаковщика, так что проблема не была решена). Наконец мы «разделили» код на FORTRAN на очень маленькие фрагменты и отправили их по очереди. Большинство фрагментов скопировалось без проблем, но несколько штук не прошли, либо прошли после многочисленных попыток.

Изучив проблемные фрагменты, мы обнаружили, что у них есть кое-что общее: все они содержат блоки комментариев, которые начинаются и заканчиваются строками, состоящими из прописных букв С (так коллега предпочитал комментировать на FORTRAN). Мы отправили на материк электронные письма специалистам по сетям и попросили о помощи. Конечно, им захотелось увидеть образцы наших файлов, не поддающихся пересылке по FTP… но наши письма до них не дошли. Наконец мы придумали просто описать, как выглядят непересылаемые файлы. Это сработало :) [Осмелюсь ли я добавить сюда пример одного из проблемных комментариев на FORTRAN? Наверное, не стоит!]

В конце концов нам удалось разобраться. Между нашей частью кампуса и выходом в сеть на материке недавно установили новый шлюз. У него были ОГРОМНЫЕ трудности с передачей пакетов, которые содержали повторяющиеся фрагменты из прописных С! Всего несколько таких пакетов могли занять все ресурсы шлюза и не позволяли пробиться большинству других пакетов. Мы пожаловались производителю шлюза… и нам ответили: «А, да, вы столкнулись с багом повторяющихся С! Мы о нём уже знаем». В конце концов мы решили проблему, купив новый шлюз другого производителя (в защиту первого скажу, что неспособность передавать программы на FORTRAN для кого-то может оказаться преимуществом!).

Трудные времена


Несколько лет назад, работая над созданием ETL-системы на Perl, предназначенной для снижения расходов на третий этап клинических испытаний, мне потребовалось обработать около 40 000 дат. Две из них не прошли проверку. Меня это не слишком обеспокоило, потому что эти даты были взяты из предоставленных клиентом данных, которые часто, скажем так, удивляли. Но когда я проверил исходные данные, оказалось, что этими датами были 1 января 2011 и 1 января 2007. Я подумал, что баг содержится в только что написанной мной программе, но оказалось, ему уже 30 лет. Это может звучать таинственно для тех, кто не знаком с экосистемой программного обеспечения. Из-за давнего решения другой компании, принятого ради заработка денег, мой клиент заплатил мне за исправление бага, который одна компания внесла случайно, а другая намеренно. Чтобы вы поняли, о чём речь, мне нужно рассказать о компании, которая добавила фичу, в результате ставшую багом, а также ещё о нескольких любопытных событиях, внёсших вклад в исправленный мной таинственный баг.

В старые добрые времена компьютеры Apple иногда спонтанно сбрасывали свою дату на 1 января 1904 года. Причина была простой: для отслеживания даты и времени использовались работающие от батарейки «системные часы». Что происходило, когда батарейка садилась? Компьютеры начинали отслеживать дату по количеству секунд с начала эпохи. Под эпохой подразумевалась референсная исходная дата, и для Macintosh’ей это было 1 января 1904. И после умирания батарейки текущая дата сбрасывалась на указанную. Но почему так происходило?

Раньше для хранения количества секунд с исходной даты Apple использовала 32 бита. Один бит может хранить одно из двух значений — 1 или 0. Два бита могут хранить одно из четырёх значений: 00, 01, 10, 11. Три бита — одно значение из восьми: 000, 001, 010, 011, 100, 101, 110, 111, и т.д. А 32 могли хранить одно из 232 значений, то есть 4 294 967 296 секунд. Для дат по версии Apple это равнялось примерно 136 годам, поэтому старые Маки не могут обрабатывать даты после 2040 года. И если системная батарейка садится, дата сбрасывается на 0 секунд с начала эпохи, и приходится вручную выставлять дату при каждом включении компьютера (или пока вы не купите новую батарейку).

Однако решение Apple хранить даты в виде секунд с начала эпохи означало, что мы не можем обрабатывать даты до начала эпохи, что имело далеко идущие последствия, как мы увидим. Apple ввела фичу, а не баг. Помимо прочего это означало, что операционная система Macintosh была неуязвима для «бага миллениума» (чего не скажешь про многие приложения для Мака, имевших собственные системы исчисления дат для обхода ограничений).

Идём дальше. Мы использовали Lotus 1-2-3, разработанное IBM «киллер-приложение», которое помогло запустить PC-революцию, хотя на Apple-компьютерах была VisiCalc, обеспечившая успех персональным компьютерам. Справедливости ради, если бы 1-2-3 не появилась, PC вряд ли взлетели бы, а история персональных компьютеров могла развиваться бы совсем иначе. Lotus 1-2-3 некорректно обрабатывала 1900-й как високосный год. Когда Microsoft выпустила свою первую электронную таблицу Multiplan, та заняла маленькую долю рынка. И когда запустили проект Excel, решили не только скопировать у Lotus 1-2-3 схему именования строк и колонок, но и обеспечить совместимость по багам, сознательно обрабатывая 1900-й как високосный год. Эта проблема существует по сей день. То есть в 1-2-3 это было багом, а в Excel — сознательным решением, которое гарантировало, что все пользователи 1-2-3 могут импортировать свои таблицы в Excel без изменения данных, даже если они ошибочные.

Но тут была ещё одна проблема. Сначала Microsoft выпустила Excel для Macintosh, который не признавал даты до 1 января 1904. А в Excel началом эпохи считалось 1 января 1900 года. Поэтому разработчики внесли изменение, чтобы их программа распознавала вид эпохи и хранила внутри себя данные в соответствии с нужной эпохой. Microsoft даже написала об этом поясняющую статью. И это решение привело к моему багу.

Моя ETL-система получала от покупателей Excel-таблицы, которые создавались под Windows, но могли быть созданы и на Маке. Поэтому началом эпохи в таблице могло быть как 1 января 1900 года, так и 1 января 1904 года. Как это узнать? Формат файла Excel показывает нужную информацию, а парсер который я применял, не показывал (теперь показывает), и предполагал, что вы знаете эпоху для конкретной таблицы. Наверное, можно было потратить больше времени на то, чтобы разобраться в двоичном формате Excel и прислать патч автору парсера, но мне нужно было сделать для клиента много другого, поэтому я быстро написал эвристику для определения эпохи. Она была простой.

В Excel дата 5 июля 1998 может быть представлена в формате «07-05-98» (бесполезная американская система), «Jul 5, 98», «July 5, 1998», «5-Jul-98» или в каком-нибудь другом бесполезном формате (по иронии судьбы, одним из форматов, который не предлагала моя версия Excel, был стандарт ISO 8601). Однако внутри таблицы неформатированная дата хранилась либо как «35981» для эпохи-1900, либо как «34519» для эпохи-1904 (числа представляют количество дней с начала эпохи). Я просто с помощью простого парсера извлекал год из отформатированной даты, а затем с помощью парсера Excel извлекал год из неотформатированной даты. Если оба значения отличались на 4 года, от я понимал, что использую систему с эпохой-1904.

Почему я не использовал просто отформатированные даты? Потому что 5 июля 1998 может быть отформатировано как «July, 98» с потерей дня месяца. Мы получали таблицы от такого количества компаний, которые создавали их такими разными способами, что разбираться с датами должны были мы (в данном случае я). Кроме того, если Excel понимает правильно, то и мы должны!

Тогда же я столкнулся с 39082. Напомню, что Lotus 1-2-3 считал 1900-й високосным, и это добросовестно повторили в Excel. А поскольку это добавляло к 1900-му один день, многие функции вычисления дат могли ошибаться на этот самый день. То есть 39082 могло быть 1 января 2011 (на Маках) или 31 декабря 2006 (в Windows). Если мой «парсер лет» извлекал из отформатированного значения 2011-й год, то всё хорошо. Но поскольку парсер Excel не знает, какая используется эпоха, он по умолчанию применяет эпоху-1900, возвращая 2006-й год. Моё приложение видело, что разница составляет 5 лет, считало это ошибкой, журналировало и возвращало неотформатированное значение.

Чтобы это обойти, я написал вот это (псевдокод):

diff = formatted_year - parsed_year
if 0 == diff
    assume 1900 date system
if 4 == diff
    assume 1904 date system
if 5 == diff and month is December and day is 31
    assume 1904 date system

И тогда все 40 000 дат отпарсились корректно.

Посреди больших заданий на печать


В начале 1980-х мой отец работал в Storage Technology, в несуществующем ныне подразделении, которое создавало ленточные накопители и пневматические системы для высокоскоростной подачи лент.

Они так переделывали накопители, чтобы те могли иметь один центральный привод «А», соединённый с семью приводами «Б», а маленькая ОС в оперативной памяти, управлявшая приводом «А», могла делегировать операции чтения и записи по всем приводам «Б».

При каждом запуске привода «А» нужно было вставлять дискету в периферийный дисковод, подключённый к «А», чтобы загрузить в его память операционную систему. Она была крайне примитивной: вычислительная мощность обеспечивалась 8-битным микроконтроллером.

Целевой аудиторией такого оборудования были компании с очень большими хранилищами данных — банки, розничные сети и т.д., — которым нужно было печатать много ярлыков с адресами или банковских выписок.

У одного клиента была проблема. Посреди задания на печать один конкретный привод «А» мог перестать работать, из-за чего вставало всё задание. Чтобы восстановить работу привода, персоналу приходилось всё перезагружать. И если это происходило посреди шестичасового задания, то терялось огромное количество дорогостоящего компьютерного времени и срывалось расписание всей операции.

Из Storage Technologies отправили техников. Но несмотря на все попытки, они не смогли воспроизвести баг в тестовых условиях: похоже, сбой возникал посреди больших заданий на печать. Проблема была не в оборудовании, они заменили всё, что могли: оперативную память, микроконтроллер, дисковод, все мыслимые части ленточного привода — проблема сохранялась.

Тогда техники позвонили в штаб-квартиру и позвали Эксперта.

Эксперт взял кресло и чашку кофе, сел в компьютерном зале — в те времена были комнаты, специально выделенные под компьютеры — и смотрел, как персонал ставит в очередь большое задание на печать. Эксперт ждал, чтобы произошёл сбой — и тот произошёл. Все посмотрели на Эксперта — а у того не было никаких идей, почему так произошло. Поэтому он приказал снова поставить задание в очередь, и все сотрудники с техниками вернулись к работе.

Эксперт опять сел в кресло и стал ждать сбоя. Прошло около шести часов, и сбой произошёл. У Эксперта опять не было идей, не считая того, что всё случилось в заполненном людьми помещении. Он приказал перезапустить задание, снова сел и стал ждать.

К третьему сбою Эксперт кое-что заметил. Сбой происходил тогда, когда персонал менял ленты в постороннем приводе. Более того, сбой возникал, как только один из сотрудников проходил через определённую плитку на полу.

Фальшпол был сделан из алюминиевых плиток, уложенных на высоте 6—8 дюймов. Под фальшполом проходили многочисленные провода от компьютеров, чтобы кто-нибудь случайно не наступил на важный кабель. Плитки были уложены очень плотно, чтобы под фальшпол не попадал мусор.

Эксперт понял, что одна из плиток была деформирована. Когда сотрудник наступал на её угол, плитка тёрлась краями о соседние плитки. С ними тёрлись и пластмассовые детали, соединявшие плитки, из-за чего возникали статические микроразряды, создававшие радиочастотные помехи.

Сегодня оперативная память гораздо лучше защищена от радиочастотных помех. Но в те годы это было не так. Эксперт понял, что эти помехи нарушали работу памяти, а с ней и работу операционной системы. Он позвонил в службу сопровождения, заказал новую плитку, сам её установил, и проблема исчезла.

Это прилив!


История произошла в серверной комнате, на четвёртом или пятом этаже офиса в Портсмуте (кажется), в районе доков.

Однажды упал Unix-сервер с основной базой данных. Его перезагружали, но он радостно продолжал раз за разом падать. Решили позвать кого-нибудь из службы поддержки.

Чувак из поддержки… кажется, его звали Марк, но это не важно… вряд ли я с ним знаком. Это не важно, правда. Остановимся на «Марке», хорошо? Отлично.

Итак, через несколько часов прибыл Марк (от Лидса до Портсмута путь не близкий, знаете ли), включил сервер и всё заработало без проблем. Типичная чёртова поддержка, клиент из-за этого очень расстраивается. Марк просматривает файлы журнала и не находит ничего предосудительного. Тогда Марк возвращается на поезд (или на каком там виде транспорта он приехал, это могла быть и хромая корова, насколько я знаю… короче, это не важно, ладно?) и отправляется обратно в Лидс, впустую потратив день.

Тем же вечером сервер падает снова. История та же… сервер не поднимается. Марк удалённо пытается помочь, но клиент не может запустить сервер.

Опять поезд, автобус, лимонное безе или ещё какая-то фигня, и Марк опять в Портсмуте. Глянь-ка, сервер загружается без проблем! Чудо. Марк несколько часов проверяет, что с операционкой или ПО всё в порядке, и отправляется в Лидс.

Примерно в середине дня сервер падает (полегче!). На этот раз кажется разумным привлечь людей из аппаратной поддержки, чтобы они заменили сервер. Но нет, примерно через 10 часов он тоже падает.

Ситуация повторялась несколько дней. Сервер работает, примерно через 10 часов падает и не запускается в течение следующих 2 часов. Они проверили охлаждение, утечки памяти, они проверили всё, но ничего не нашли. Затем сбои прекратились.

Неделя прошла беззаботно… все были счастливы. Счастливы, пока всё не началось опять. Картина та же. 10 часов работы, 2—3 часа простоя…

А потом кто-то (кажется, мне говорили, что этот человек не имел отношения к ИТ) сказал:

«Это прилив!»

Возглас встретили пустыми взглядами, и, вероятно, чья-то рука поколебалась у кнопки вызова охраны.

«Он перестаёт работать с приливом».

Казалось бы, это совершенно чуждая концепция для сотрудников ИТ-поддержки, которые вряд ли читают «ежегодник приливов», сидя за кофе. Они объяснили, что это никак не может быть связано с приливом, потому что сервер работал неделю без сбоев.

«На прошлой неделе прилив был низким, а на этой высоким».

Немного терминологии для тех, у кого нет лицензии на управление яхтой. Приливы зависят от лунного цикла. И по мере вращения Земли, каждые 12,5 часа гравитационное притяжение Солнца и Луны создаёт приливную волну. В начале 12,5-часового цикла возникает прилив, в середине цикла — отлив, а в конце снова прилив. Но поскольку орбита Луны меняется, меняется и разница между отливом и приливом. Когда Луна находится между Солнцем и Землёй или с противоположной стороны от Земли (полнолуние или отсутствие Луны), мы получаем сизигийские приливы — самые высокие приливы и самые низкие отливы. В полулуние мы получаем квадратурные приливы — самые низкие приливы. Разница между двумя экстремумами сильно уменьшается. Лунный цикл длится 28 дней: сизигийские — квадратурные — сизигийские — квадратурные.

Когда технарям объяснили суть приливных сил, те сразу же подумали о том, что нужно позвонить в полицию. И вполне логично. Но оказалось, что чувак был прав. За две недели до этого неподалёку от офиса пришвартовался эсминец. Каждый раз, когда прилив поднимал его на определённую высоту, радарный пост корабля оказывался на уровне пола серверной. И радар (или средство РЭБ, или какая-то другая игрушка военных) устраивал в компьютерах хаос.

Полётное задание для ракеты


Мне поручили портировать большую (около 400 тыс. строк) систему управления и контроля запуска ракет под новые версии операционной системы, компилятора и языка. Точнее, с Solaris 2.5.1 на Solaris 7, и с Verdix Ada Development System (VADS), написанной на Ada 83, на систему Rational Apex Ada, написанную на Ada 95. VADS была куплена компанией Rational, и её продукт устарел, хотя Rational постаралась реализовать совместимые версии специфических для VADS пакетов, чтобы облегчить переход на компилятор Apex.

Три человека помогали мне просто получить чисто скомпилированный код. На это ушло две недели. А затем я самостоятельно работал над тем, чтобы заставить систему работать. Короче, это были худшие архитектура и реализация программной системы, что мне встречались, поэтому на завершение портирования ушло ещё два месяца. Затем систему передали на тестирование, что заняло ещё несколько месяцев. Я сразу исправлял баги, которые находили при тестировании, но их количество быстро снизилось (исходный код был production-системой, поэтому его функциональность работала достаточно надёжно, мне лишь пришлось убрать баги, возникшие при адаптации под новый компилятор). В конце концов, когда всё работало так, как и должно было, меня перевели на другой проект.

А в пятницу перед Днём благодарения раздался телефонный звонок.

Примерно через три недели должны были протестировать запуск ракеты, и в ходе лабораторных испытаний обратного отсчёта последовательность команд оказалась заблокированной. В реальной жизни это привело бы к прерыванию испытаний, а если блокировка возникла бы в течение нескольких секунд после запуска двигателя, то во вспомогательных системах произошло бы несколько необратимых действий, из-за которых пришлось бы долго — и дорого — заново готовить ракету. Она не стартовала бы, но очень много людей сильно расстроилось бы из-за потери времени и очень, очень больших денег. Не позволяйте никому говорить вам, что министерство обороны бесцеремонно расходует деньги — я еще не встречал ни одного менеджера по контрактной деятельности, для которого бюджет не был бы на первом или втором месте, а следом за ним график.

В предыдущие месяцы это испытание обратного отсчёта прогонялось сотни раз во многих вариантах, и было лишь несколько мелких заминок. Так что вероятность возникновения этой была очень низкой, однако её последствия были очень значительны. Перемножьте оба этих фактора, и поймёте, что новость предрекала мне и десяткам инженеров и менеджеров испорченную праздничную неделю.

И внимание было обращено на меня, как на человека, портировавшего систему.

Как и в большинстве систем, для которых критически важна безопасность, здесь журналировалось множество параметров, так что удалось довольно легко определить несколько строк кода, исполненных перед зависанием системы. И конечно же, в них не было абсолютно ничего необычного, те же самые выражения успешно исполнялись буквально тысячи раз в ходе того же прогона.

Мы позвали в Rational людей из Apex, поскольку это они разработали компилятор и в подозрительном коде вызывались некоторые разработанные ими подпрограммы. На них (и всех других) произвело впечатление, что нужно выяснить причину проблемы буквально национального значения.

Поскольку в журналах не было ничего интересного, решили попытаться воспроизвести проблему в местной лаборатории. Это была непростая задача, поскольку событие возникало примерно один раз на 1000 прогонов. Одной из предполагаемых причин было то, что вызов разработанной поставщиком мьютекс-функции (часть пакета миграции VADS) Unlock не приводил к разблокированию. Поток обработки, вызывавший функцию, обрабатывал heartbeat-сообщения, которые номинально приходили каждую секунду. Мы подняли частоту до 10 Гц, то есть 10 раз в секунду, и начали прогон. Примерно через час система заблокировалась. В журнале мы увидели, что последовательность записанных сообщений была такой же, как во время сбойного испытания. Сделали ещё несколько прогонов, система стабильно блокировалась через 45—90 минут после начала, и каждый раз в журнале была одна и та же трасса. Несмотря на то, что технически мы сейчас исполняли другой код — частота сообщений была другой — поведение системы повторялось, поэтому мы уверились, что этот нагрузочный сценарий приводил к той же проблеме.

Теперь нужно было выяснить, где именно в последовательности выражений возникала блокировка.

В этой реализации системы использовалась система задач Ada, и использовалась невероятно плохо. Задачи — это высокоуровневая параллельно исполняемая конструкция в Ada, что-то вроде потоков исполнения, только встроенная в сам язык. Когда двум задачам нужно взаимодействовать, они «назначают рандеву» (rendezvous), обмениваются нужными данными, а затем прекращают рандеву и возвращаются к своим независимым исполнениям. Однако система была реализована иначе. После того, как с целевой задачей проводилось рандеву, эта целевая задача проводила рандеву с другой задачей, которая потом проводила рандеву с третьей, и так далее, пока не завершалась какая-то обработка. После этого все эти рандеву завершались и каждая задача должна была вернуться к своему исполнению. То есть мы имели дело с самой дорогой в мире системой вызова функций, которая стопорила весь «многозадачный» процесс, пока обрабатывала часть входных данных. И раньше это не приводило к проблемам лишь потому, что пропускная способность была очень низкой.

Я описал этот механизм задач потому, что когда запрашивалось рандеву или ожидалось его завершение, могло происходить «переключение задач». То есть процессор мог начать обработку другой задачи, готовой к выполнению. Получается, что когда одна задача готова к рандеву с другой задачей, может начаться выполнение совершенно другой задачи, и в конце концов управление возвращается первому рандеву. И могут возникать другие события, которые приводят к переключению задачи; одно из таких событий — вызов системной функции, например, печать или выполнение мьютекса.

Чтобы понять, какая строка кода приводила к проблеме, мне нужно было найти способ записывать прогресс прохождения последовательности выражений, при этом не инициируя переключение задачи, что может помешать возникновению сбоя. Поэтому я не мог воспользоваться Put_Line(), чтобы не выполнять операций ввода-вывода. Можно было задать переменную-счётчик или что-то подобное, но как мне посмотреть её значение, если я не могу выводить её на экран?

Также при изучении журнала выяснилось, что, несмотря на зависание обработки heartbeat-сообщений, которое блокировало все операции ввода-вывода процесса и не давало выполнять другие обработки, прочие независимые задачи продолжали исполняться. То есть работа блокировалась не целиком, только (критическая) цепочка задач.

Это была зацепка, необходимая для вычисления блокирующего выражения.

Я сделал Ada-пакет, который содержал задачу, перечисляемый тип и глобальную переменную этого типа. Перечисляемые литералы были привязаны к конкретным выражениям проблемной последовательности (например, Incrementing_Buffer_Index, Locking_Mutex, Mutex_Unlocked), а затем вставил в неё выражения присваивания, которые присваивали соответствующее перечисление глобальной переменной. Поскольку объектный код всего этого просто хранил постоянную в памяти, переключение задачи в результате его исполнения было крайне маловероятно. В первую очередь мы подозревали выражения, которые могли переключить задачу, поскольку блокировка возникала при исполнении, а не возвращении при обратном переключении задачи (по нескольким причинам).

Отслеживающая задача просто выполнялась в цикле и периодически проверяла, изменилось ли значение глобальной переменной. При каждом изменении значение сохранялось в файл. Затем недолгое ожидание и новая проверка. Я записывал переменную в файл потому, что задача исполнялась только тогда, когда система выбирала её для исполнения при переключении задачи в проблемной области. Что бы ни происходило в этой задаче, это не влияло бы на другие, не связанные с ней заблокированные задачи.

Ожидалось, что когда система дойдёт до исполнения проблемного кода, глобальная переменная будет сбрасываться при переходе к каждому следующему выражению. Затем произойдёт что-то, приводящее к переключению задачи, и поскольку частота его исполнения (10 Гц) ниже, чем у мониторящей задачи, монитор мог зафиксировать значение глобальной переменной и записать его. В нормальной ситуации я мог бы получить повторяющуюся последовательность подмножества перечислений: последние значения переменной на момент переключения задачи. При зависании глобальная переменная не должна больше меняться, и последнее записанное значение покажет, исполнение какого выражения не завершилось.

Запустил код с отслеживанием. Он завис. А мониторинг сработал как по маслу.

В журнале оказалась ожидаемая последовательность, которая прерывалась значением, указывающим, что был вызван мьютекс Unlock, а задача не завершена — как и в случае с тысячами предыдущих вызовов.

Инженеры из Apex в это время лихорадочно анализировали свой код и нашли в мьютексе место, где, теоретически, могла возникать блокировка. Но её вероятность была очень мала, поскольку к блокировке могла привести лишь определённая последовательность событий, происходящих в определённое время. Закон Мёрфи, парни, это закон Мёрфи.

Чтобы защитить нужный фрагмент кода, я заменил вызовы мьютекс-функций (построенных на основе мьютекс-функциональности ОС) маленьким нативным мьютекс-пакетом Ada, чтобы с его помощью управлять доступом мьютексов к этому фрагменту.

Вставил в код и запустил тест. Семь часов спустя код продолжал работать.

Мой код передали в Rational, там его скомпилировали, дизассемблировали и проверили, что в нём не используется тот же подход, который применялся в проблемных мьютекс-функциях.

Это была самая многолюдная проверка кода в моей карьере :) В комнате со мной было около десяти инженеров и менеджеров, ещё десяток людей подключились по конференц-звонку — и все они исследовали около 20 строк кода.

Код прошёл проверку, собрали новые исполняемые файлы и передали на формальное регрессионное тестирование. Пару недель спустя испытания обратного отсчёта прошли успешно, и ракета взлетела.

Ладно, это всё хорошо и прекрасно, но в чём суть этой истории?

Это была совершенно отвратительная проблема. Сотни тысяч строк кода, параллельное исполнение, свыше десятка взаимодействующих процессов, плохая архитектура и плохая реализация, интерфейсы для встроенных систем и миллионы потраченных долларов. Никакого давления, верно.

Я был не единственным, кто работал над этой проблемой, хотя и находился в центре внимания, поскольку делал портирование. Но хотя я и делал его, это не означает, что я разбирался со всеми сотнями тысяч строк кода, или хотя бы бегло просмотрел их. Код и журналы анализировали инженеры по всей стране, но когда они говорили мне свои гипотезы о причинах сбоя, мне хватало полминуты, чтобы опровергнуть их. И когда меня просили проанализировать теории, я перекладывал это на кого-нибудь другого, потому что мне было очевидно, что эти инженеры идут не тем путём. Звучит самонадеянно? Да, это так, но я отклонил гипотезы и запросы по другой причине.

Я понимал природу проблемы. Я не знал точно, где она возникает и почему, но я знал, что именно происходит.

За годы работы я накопил много знаний и опыта. Я был одним из пионеров использования Ada, понимал её достоинства и недостатки. Я знаю, как runtime-библиотеки Ada обрабатывают задачи и работают с параллельным исполнением. И я разбираюсь в низкоуровневом программировании на уровне памяти, регистров и ассемблера. Иными словами, у меня глубокие познания в своей сфере. И я использовал их для поиска причины проблемы. Я не просто обошёл баг, а понимал, как найти его в условиях очень чувствительной среды исполнения.

Такие истории борьбы с кодом не слишком интересны для тех, кто не знаком с особенностями и условиями такой борьбы. Но эти истории помогают понять, что требуется для решения действительно трудных проблем.

Для решения действительно трудных проблем вам нужно быть не просто программистом. Вам нужно понимать «судьбу» кода, как он взаимодействует со своим окружением и как работает само окружение.

И тогда у вас будет своя испорченная праздничная неделя.



Продолжение следует.
NIX
Компания

Комментарии 245

    +10
    Невозможно, — ответил он, — это не может быть аппаратной проблемой

    Это больше всего бесит в японцах. Всё у них хорошо и отлажено, пока носом не ткнёшь…
      +1
      Не знаю, как насчет японцев, но я до последнего не мог поверить что виснет ардуинкаа в моем терморегуляторе для морозильной камеры, причем без всякой системы могла проработать месяцами или зависнуть два раза за неделю. Даже watchdog проблему не решал. Причина оказалась банальна — перегрев, дополнительно с ардуиной и модулем питания к ней, тепло выделяла плата резисторов на светодиоды морозилки. Определил случайно, оказавшись рядом когда зависло.
      +23
      Про Чернобыльских коров история ИМХО придуманная, такого не может быть.
        +5
        Да и про эсминец с приливом — тоже гон.
          +3

          Ну я как-то отлаживал программу прибора, который считал импульсы с ионизационной камеры и внезапно сбрасывал аварийную защиту
          Оказалось, что на крыше здания бвла радиовышка. Какие-то регулярные импульсы с нее были видны даже висящим щупом осциллогрфа.

            +6
            Про то что рядом с радиовышкой можно слушать радио Маяк из электробритвы — верю.
            Про то что радиолинк нерегулярно может забивать микроволновая сушилка на древообрабатывающем производстве — верю.
            А вот в то что с эсминца, который еще и ошвартованный, то есть не в рабочем режиме, настолько ровненько что-то излучает что прилив есть — попадает в луч, прилива нет — не попадает — это как-то крайне сомнительно. Ну или там не все подробности приведены.
              0
              Я эту историю видел в варианте про Владивосток и там (наш) эсминец из-за прилива мог входить в бухту, а при отливе оставался на рейде.
                0

                В смысле, его всё время взад-вперёд таскали, что ли?

                  +1
                  Больше похоже на перепевы истории с российским, поздней советским Порт-Артуром, где внешний рейд глубоководный, а отличная, закрытая, удобная огромная бухта — ха-ха-ха, на три четверти воробью напиться негде.
                  И, да, не путать с современным китайским Люйшунем, где вбуханы большие тонны тротила и потрачены неимоверные бабки на дноуглубление в скальном грунте.
            –2
            Конечно придуманная. Коровы ведь не едят траву, являясь, таким образом, прекрасным аккумулятором радионуклидов. А СССР всегда заботился о здоровье своих граждан, вон, и путевки в санаторий через профсоюзы выдавали.
              +32

              Чтобы компьютер сбоил от радиации, эти коровы должны были светится.

                +7
                Подтверждаю. Делал дозиметр (хотя и не на PDP11, а ATmega), проверяли на экстремальной радиации — поднесли к источнику к которому и близко нельзя человеку подходить (с 3-х метров до последней линии защиты уже опасных 30мкЗв было), СБМ-20 давно зашкалило, а контроллер все так же нормально работал (чему мы сильно удивлялись).

                До этой проверки мы изучали как делать защиту от радиацию, что применяют в космосе и т.п. Пришли к выводу что на Земле такое не нужно потому что радиация довольно слабая, и можно легко починить/заменить.
                  0
                  Это что у вас за источник такой был, БИС-Р что-ли?
                    0
                    Не знаю, просто присутствовал при испытаниях (всем захотелось посмотреть).
                      0
                      СБМ-20, ЕМНИП начинает тлеть где-то на 3 мЗв/ч, где-то у меня валялась фотография нормального дозиметра с 1.61 мЗв/ч. Ну и по дурному опыту — 200 мкЗв/ч особо не портят, разве что изотоп, который их выдаёт «в подарок» дарит адский сушняк даже при дыхании через всякие фильтры(с алкогольным сушняком сравнивать бесполезно). Вот и интересно, сколько мЗв светил тот источник.
                        0
                        Мощность я не помню какая была. (Я просто программист-контрактор который там у них раз был) Помню что он запищал еще на внушительном расстоянии, и ни один человек не подходил даже до того места где сработала сигнализация (ответ для Byteler тоже). Подозреваю правда что причина зашкаливания была не в СБМ-20, а в системе питания (диодный умножитель). ТЗ было выполнено и перевыполнено, на этом нам сказали остановится, и никаких испытаний больше не проводилось.
                    0
                    " поднесли к источнику к которому и близко нельзя человеку подходить"
                    — После этого дома отпала необходимость в ночнике?
                      0
                      контроллер все так же нормально работал

                      Как долго он мог «все так же нормально работать»? Если вы ожидали мгновенного вызода из строя, то вы, кажется, не очень хорошо изучали, как делать защиту от радиации и что применяют в космосе.
                      Ваши ожидания соответствуют эффектам мощности дозы и одиночным сбоям, а по факту вы получали эффекты полной поглощенной дозы, на отказ от которых требуется время — чтобы собственно набрать эту дозу. Если вы никаких долгосрочных испытаний не делали, то действительно могло показаться, что у вас все хорошо. Впрочем, если это носимый дозиметр, то микросхемы действительно обычно намного более радстойкие, чем люди)
                        0
                        После теста я продолжал его использовать для программирования (это был еще прототип), проблем не было замечено, хотя специально и не искал. Да, N-сотый бит памяти или что-то еще могло выйти из строя, но массовых проблем точно не было. Тест был в экстремальных условиях, в которые обычные дозиметры не попадут (конкретно эта модель). Тест был не полный, но достаточный. Разница с космической радиацией еще заключается в энергиях одной частицы — в космосе одна частица может превышать энергии более 10^9эВ, а на Земле можно ожидать менее 10^6эВ (в реакторе больше). Т.е. разница более чем на 3 порядока от одного, точечного взаимодействия.

                        Я еще связывался с человеком который в блоге писал что он делал дозиметры и у него на каком-то дозиметре через несколько лет глюкнул экран предположительно из-за радиации. Он тоже сказал что можно не беспокоится, такие случаи очень редки.
                          +1
                          Разница с космической радиацией еще заключается в энергиях одной частицы — в космосе одна частица может превышать энергии более 10^9эВ, а на Земле можно ожидать менее 10^6эВ
                          В космосе подавляющее большинство частиц имеет энергию 0.1-10 МэВ, монстры с энергией в ГэВ больше страшилки, чем реальная проблема.
                          image

                          После теста я продолжал его использовать для программирования (это был еще прототип), проблем не было замечено, хотя специально и не искал. Да, N-сотый бит памяти или что-то еще могло выйти из строя, но массовых проблем точно не было.

                          Повторяю: дозовые эффекты не так работают. Они воздействуют на все сразу, но постепенно. Проблемы должны были бы начаться после длительного накопления радиации. Но для вас это действительно неважно, потому что пока дозиметр накопит достаточно, должны давно умереть от лучевой болезни несколько пользующихся им человек.
                            0
                            Ну через квадратный метр (площадь проекции человека) недо-«бейсбольные мячи» штучками в секунду — это не так и мало.
                          0
                          Только вот под историю это не подходит: в ней неполадки только когда подъезжал особенный состав.
                            +6
                            Типичное описание одиночных эффектов или эффектов мощности дозы, которых там на самом деле быть не могло.
                        +3

                        Не только коровы, там и сами вагоны были… не очень чистые, скажем так.

                          +4

                          Ну, на самом деле, техника из Чернобыля таки вполне себе «светилась», только не в видимом диапазоне, а в виде треков частиц на фотопленке, хотя частица должна пройти через слои стекла объектива или металла корпуса фотокамеры, чтобы оставить трек. Даже сейчас иногда можно в Припяти «поймать» трек на матрицу фотоаппарата. Говорят, что даже сетчатка глаза улавливала в Чернобыльской зоне вспышки от треков частиц в темноте или если закрыть глаза.


                          А если учесть, что гражданский К1801ВМ1 не в металлическом корпусе, а просто залитый компаундом чип на кремниевой подложке, то вполне реально предположить, что проходящий поезд мог «светиться» так, чтобы пара-тройка лишних электронов в цепях микросхемы могла на время вывести из строя чудо компьютерной техники. К тому же, емнип, в ДВК использовалась «стираемая» РППЗУ со слюдяным окошком для стирания ультрафиолетовым облучением, что тоже явно не добавляет системе надежности в условиях ионизирующего излучения.


                          Конечно, вряд ли сами коровки так «светились», а вот вагоны с ними (здоровенный кусок металла все таки) — вполне.


                          Правда, другой вопрос состоит в том, каким именно образом вагоны могли получить наведенную радиацию в таком объеме. Но «фонящей» техники (а также ювелирки) в те годы вполне хватало по всей Украине.

                            +8
                            Наведенную — никак. Разве что на них собрался мусор.

                            Но, повторюсь, давайте исходить из бритвы Оккама… За студеными былинами о невероятных сбоя аппаратно-программных комплексов чаще всего стоят довольно банальные вещи.

                            Ну и чтобы добавить прохлады этой истории — я так и не понял, был ли это ГАЦ, или ДЦ, или хрен знает что еще за система (прохладные истории обычно умалчивают о таких подробностях, поскольку их сочинителям эти термины неизвестны), но тот факт, что она находилась в, мать его, _Свердловске_, достаточно ясно должен говорить о том, что коровы туда приезжали, пожалуй, более чистыми в радиоактивном плане, чем были ранее. Само собой сарказм. :)
                              +2
                              И поймать такой трек можно поймать в соседнем здании да так, чтобы сбойнула ЭВМ?
                              Спутники летают годами на орбите в космосе и не сбоят.
                              Как уже говорили, чтобы такое произошло, нужно, чтобы коровы светились. И даже в таком случае, думаю ЭВМ в соседнем здании сбоить не будет.
                                +1
                                И поймать такой трек можно поймать в соседнем здании да так, чтобы сбойнула ЭВМ?

                                Я не сомневаюсь, что эта история не более чем байка, но теоретически ионизирующее излучение таки может выводить из строя компьютерную технику.


                                Спутники летают годами на орбите в космосе и не сбоят.

                                На хабре есть статья по этому поводу, и я так понимаю таки сбоят иногда.

                                  +1
                                  В космосе есть высокоэнергетические заряженные частицы с офигенно высокой энергией. В наведенном излучении или в радиоактивном загрязнении взяться им неоткуда. Это принципиальная разница.
                                    0

                                    В статье идет речь также и о вполне «мирном атоме», не космическом, где вроде нет места высокоэнергетическим заряженным частицам — флюорографии, например.


                                    По крайней мере, о битых пикселах от треков заряженных частиц на матрице фотоаппарата в Чернобыле (уже непосредственно внутри нового конфаймента, правда) через стекла объектива или магниевый корпус второй «морковки» можно говорить с уверенностью — приятель-фотокорреспондент делал репортаж там, и был очень расстроен, когда обнаружил, что камера начала выдавать снимки «в крапинку».

                                    +1
                                    Практически на крыше 4 блока ЧАЭС роботы на промышленной 12-27-вольтовой логике сходили с ума — но там точечные источники излучения могли выдавать тысячи рентген в час с очень неприятным спектром. Если б так «светилась» корова — она была бы в виде облезлой туши, которую даже не надо замораживать, самостерилизация, хехе.
                                  • НЛО прилетело и опубликовало эту надпись здесь
                                      +6

                                      Ого, вот это факап!

                                        0
                                        Мало того… за бессвинцовый припой в т.ч. топят и по этой тоже причине, т.к. мол в шарах BGA которые как раз под кристаллом может быть загрязнённый радионуклидами свинец (как говорят — в нём они есть всегда в следовых количествах). Да тут даже знаю на кого сослаться, но не будет отвлекать товарищей:)
                                          0
                                          Когда тут неподалёку обсуждали спектрометр — оловянно-висмутовый припой посчитали годным, даже и несмотря на то, что висмут на самом деле слаборадиоактивен и безо всяких следовых количеств. Многое зависит от спектра ненужного шума.
                                      +2
                                      ну на жд станции все же не космос. пробег тяжелых частиц в атмосфере не такой большой.
                                      Даже если предположить что там был оооочень бета-источник (тогда зависающие компы это последняя проблема этой станции и всего вокруг), то это метры в атмосфере + любой мало-мальски плотный кусок чего-угодно от пластика (корпус) до деревяшки (здание) этот поток срежет.
                                      А с гамма-излучением и его влиянием на микросхемы все несколько сложнее.
                                        0
                                        любой мало-мальски плотный кусок чего-угодно
                                        в данном случае называется «капитальная кирпичная стена». СМки на улице не ставили.
                                        +7
                                        вполне реально предположить, что проходящий поезд мог «светиться» так, чтобы пара-тройка лишних электронов в цепях микросхемы могла на время вывести из строя чудо компьютерной техники.
                                        Нононо, для того, чтобы проявились эффекты мощности дозы нужна не пара-тройка частиц, а взрыв атомной бомбы поблизости. А одиночным сбоям там неоткуда было взяться, типы излучения не те.

                                        так что байка красивая, но неправдоподобная.
                                          +2
                                          Почему-то сильно подозреваю, что это была программная проблема, подобная истории с маршрутизатором и фортраном… Приходил поезд у которого в сопроводиловке, в данных, были «багованные» байты и как раз состав с «плохими» коровками, ну и вот результат. Сильно подозреваю, что такие истории могли случаться и на других станциях куда приходили составы со скотом.
                                        +19
                                        Просто-напросто эти истории сочиняют люди, никогда не бывавшие на станциях, не видевшие ни вагонов, ни коров. Зато все знают, что СССР травил граждан зараженным мясом…
                                          +17
                                          да там вся байка на столько топорно слеплена и контрольный в конце… «подал на эмиграцию»
                                            +7
                                            Особенно удачно: «населению иметь дозиметры запрещалось».
                                            С 1988 серийно начал производится бытовой дозиметр «Белла», очевидно только для, что бы было что запрещать.
                                              +1

                                              Справедливости ради, надо сказать, что до этой "Беллы" действительно дозиметры простым людям не были доступны от слова "совсем" в течение двух лет после аварии. Даже в журнал "Радио" не принимали к публикации статьи на эту тему — первую они опубликовали в 1990-м году.

                                        +13
                                        Конечно придуманная. Коровы ведь не едят траву, являясь, таким образом, прекрасным аккумулятором радионуклидов. А СССР всегда заботился о здоровье своих граждан, вон, и путевки в санаторий через профсоюзы выдавали.

                                        Проблема тут только лишь в том, что:
                                        1) Мощность излучения пропорциональна квадрату расстояния. Наиболее высокоэнергетичным является альфа/бета-излучение. Гамма излучение имеет значительно меньшие энергии. При этом альфа/бета частицы достаточно легко останавливаются.
                                        2) Компьютеры не стоят на подъездных путях, если это только не компьютеры в бункерах отгрузки «сыпучки», а стоят сбоку от подъездных путей в административных зданиях. Расстояния от административных зданий до подъездных путей может составлять и десяток метров (как на станции Свердловск-Сортировочная, о которой скорее всего идёт речь). А непосредственно сам центр управления ЖД транспортом в Свердловске (ну местный ЦУП РЖД) стоит вообще очень далеко от ЖД путей.
                                        3) Компьютеры не стоят в чистом поле, а стоят в бетонных зданиях, что ещё значительнее снижает воздействие радиации.
                                        4) Коровы умирают от воздействия радиации примерно так-же как и люди.
                                        5) Свердловская область снабжалась(и снабжается) мясом из Свердловской, Курганской и Челябинской областей. Мясо из Казахстана туда не тащили даже при Союзе, учитывая что Курганская область — аграрная.
                                        Итого, учитывая пункты 1-3, поезда с коровами должны были иметь такие уровни радиации, которые были бы несовместимы со сколь-нибудь долгой продолжительностью жизни коров исходя из пункта 4 (равно как и машинистов этих поездов). А пункт 5 добавляет общей несуразности во всю эту историю.
                                        И бонусный пункт 6:
                                        6) После аварии на ЧАЭС в нашей семье появился… бытовой дозиметр. Да, в тот самый год аварии. Нет, был куплен в магазине, а не в военной части.
                                          +1
                                          История конечно выглядит фантастически, я сам не верю в такие несостыковки.
                                          Но есть вопрос про дозиметр: насколько я помню, в 86 про Чернобыль не писали в прессе, были только разговоры на кухнях. Сомневаюсь, что советская промышленность вдруг за полгода наладила выпуск бытовых дозиметров.
                                          Здесь на хабре есть статья, в ней говорится про опубликованные в 1990 году схемы дозиметров и «Беллу» за 97 рублей. Но в год аварии, купленный в магазине?
                                            +2
                                            насколько я помню, в 86 про Чернобыль не писали в прессе

                                            pripyat-city.ru/publications/147-pressa-ob-avarii.html
                                            Да и по моим ощущениям — вполне писали. Не сразу, без подробностей «кровь-кишки», но писали
                                              +2

                                              Я из Свердловска просто, вернее Екатеринбурга. И в курсе про соседние области. Поэтому когде прочитал про «мясо из Казахстана» посмеялся.
                                              А по Чернобылю ещё проще — отец работал в энергетике и знал об аварии «из первых уст». Ну и дозиметры все же продавались.

                                                +1
                                                насколько я помню, в 86 про Чернобыль не писали в прессе, были только разговоры на кухнях.

                                                14 мая 1986 года, Центральное телевидение:

                                                +2
                                                наша проблема, что мы отвечаем вдумчиво и осмысленно, вспоминая факты, а робот, бот оппонент на всю эту страницу на которую потрачено не менее 10мин: «Ой да ладн..» и… дальше пошёл.
                                                  0
                                                  Как вариант — один из предыдущих начальников говаривал — «Не факт». Распинаешься такой, доказываешь ему, выкладки делаешь, чувствуешь — по очкам побеждаешь. А одна короткая фраза — и все старания насмарку, и возражать бесcмысленно, тред закрыт.
                                                    0
                                                    Так я не для него в первую очередь пишу, а для тех, кто находится в состоянии неопределенности. Ведь обычному человеку в общем то совершенно не надо точно знать о том, что такое радиация и вот всём том, что я написал в посте)
                                                  +5
                                                  Попробуйте от комбинирования газетных лозунгов перейти к физике. СМка не могла находиться ближе десятка метров от вагона. И обязательно была стена между ними. Капитальная кирпичная или бетонная стена, в сараях выч.центры не делали.
                                                  Ну как, что получилось?
                                                  +9
                                                  История — чистая правда. Просто коровы были вот такие:

                                                  пруф
                                                  brahmin
                                                    +5
                                                    Или такие
                                                    diablo-2-cow-level
                                                      +3
                                                      Да нет же, вот этих проследовала своим ходом
                                                      целая стая
                                                      image
                                                    +17

                                                    Ага. "Населению иметь дозиметры запрещалось" — звиздёж засчитан. Так "запрещалось", что после Чернобыля чуть ли не каждый первый купил себе дозиметр (и наша семья в том числе — конкретно вот этот). Стоил почти месячную зарплату — небось, немало кооперативов на радиофобии поднялись. Мой "подвиг" состоял в том, что, когда к нам приезжала делегация из Чернобыля, я этим дозиметром померил их автобусы, и жутко разочаровался, когда фон оказался превышенным (по сравнению с естественным) всего в полтора раза — а ожидалось, как вы понимаете, 100500. Кстати, дозиметр проверялся (мною лично) на радиоактивном источнике из кабинета физики, и действительно показал примерно заявленную на том источнике величину, так что с заявлениями про то, что Всемогущий Злобный КГБ чегой-то там подкрутил в дозиметре, попрошу вон туда →

                                                      +1
                                                      С остальным спорить не буду, но на счёт «запрещалось» — вполне возможно. Нашёл руководство от «Беллы», это 1990 год. Чуть позже в журнале «Радио» появилась статья, как использовать дозиметр в качестве частотомера — прибор явно пошёл в массы. Но речь идёт про 80-е, тогда всё было немного по-другому. Дозиметр реально проще было достать у военных. А армейский дозиметр и сейчас не продаётся из-за входящего в его состав калибровочного источника радиации.
                                                      Кстати, про изобретённый в позднем СССР метод снижения радиоактивности продуктов путём разбавления сильно фонящих «чистыми» слышал ну очень давно.
                                                        +11

                                                        Ну я говорю — куплен он был, если мне не изменяет склероз, в конце 1986 года — тогда ещё беспокойство вида "а не продадут ли мне на базаре клубнику с радиацией" было вовсю, многие ходили с дозиметрами и проверяли перед покупкой.


                                                        Метод абсолютно очевидный для любого, примерно знакомого с физикой. Но чтобы "корова в стоящем за 100 метров вагоне влияла на компьютер за бетонной стенкой — это бред: мощность излучения падает пропорционально квадрату расстояния; требуемая мощность тупо несовместима с жизнью (коровы) — да и где она такую дозу набрать могла — ТВЭЛами лакомилась, что ли?

                                                          0
                                                          Не буду спорить, но даже по приведённой Вами ссылке на Википедию — 1990 год. Чернобыльской клубники не один год потом боялись.
                                                            +2
                                                            Чернобыльской клубники не один год потом боялись
                                                            а сейчас чипирования при прививке боятся — и? Разверните аргумент, пожалуйста.
                                                              +2
                                                              Это я написал в ответ на «куплен он был, если мне не изменяет склероз, в конце 1986 года — тогда ещё беспокойство вида „а не продадут ли мне на базаре клубнику с радиацией“ было вовсю». Т.е. беспокойство было и после 1986 года, дозиметр мог быть куплен позднее.
                                                              Мне не удалось найти информацию о бытовых дозиметрах до 1990 года, но несколько человек уже написали, что они были. Ок, вполне возможно — я сам пару раз был в ситуации, когда мои слова было нечем подтвердить на тот момент.
                                                                +1

                                                                Если сохранилась инструкция и/или сам дозиметр — можно посмотреть напечатанную на них дату производства, но это несколько сложновато, т.к. он сейчас от меня на другом континенте.

                                                                +8
                                                                Сразу анекдот про чернобыльские яблочки вспомнился
                                                                Сидит бабка на базаре, торгует яблоками. «Яблочки, яблочки с Чернобыля! Мужик говорит «Ты бабуля молчи что они с Чернобыля, кто-же у тебя их возмёт. «Берут милок, кто начальнику, кто тёще!"
                                                                0
                                                                Не знаю как у вас, у нас боялись Чернобыльской черники.
                                                                  +9
                                                                  В Германии до сих пор боятся чернобыльской радиации и поэтому не собирают грибы в лесу, только покупая магазинные.
                                                                  Крупнейший экспортнер грибов в Германию — республика Беларусь.
                                                                    +1
                                                                    Тоже хорошая штука для параноика.
                                                                      0
                                                                      Ну, они там давно ягод не едят из леса. Но причина возможно не Чернобыль. Я слышал об этом такую историю. Короче в наш городок в 90-е приезжали скауты из Германии. И им очень понравилось есть ягоды в лесу. Они рассказали, что у них в лесу ягоды не едят. Причина в том, что в последние десятилетия зимы стали значительно теплее. Из-за этого массово размножился какой-то жучок, который живет под корой и губит их их деревья. Леса теперь поэтому опрыскивают. Жучки гибнут, но есть продукты из леса нельзя.
                                                                        0
                                                                        Но причина возможно не Чернобыль.
                                                                        Мне про грибы немцы рассказывали именно про Чернобыль.
                                                                        А жучков сейчас никто тронуть не смеет, в стране экологическая катастрофа, пчелы вымирают. Поэтому и пестициды под запретом, и везде стараются побольше трав для них высевать.
                                                                          0
                                                                          Поискал в интернете, да вроде уже как раз тридцать лет ядохимикаты не испольуют. Значит тогда это были ядохимикаты, теперь Чернобыль. Однако в восточной Европе, по крайней мере в Литве, они массово закупают лисички.
                                                                            +2
                                                                            Ага, регулярно вижу в магазинах литовские и белорусские лисички и каждый раз дико угораю с этого)
                                                            • НЛО прилетело и опубликовало эту надпись здесь
                                                              +7
                                                              Если учесть что СМ-1800 была на микропроцессоре КР580ВМ80А, то это явно «городская легенда». Я просто молчу о том что коровки с таким уровнем радиации, чтоб засбоил комп в здании, должны были откинуть копыта давным давно, а не ехать живыми на мясокомбинат.
                                                              Это еще хорошо, что рассказчик не знал что весь каменный уголь радиоактивен. И соответственно шлак и шлакоблоки.
                                                                +5
                                                                Свердловск — Екб находится на огромной гранитной плите, из которой сочится радиоактивный газ радон, повышая естественный фон. По железке возят чёрти чё, в т.ч. может быть состав гранита, который тоже фонит.

                                                                Наверное, дело было так: есть нормы на потери на перевозке, в т.ч. КРС. Чем больше расстояние, тем выше нормы. Можно попи невозбранно заниматься расхищением социалистической собственности, добирая до верхнего предела. Просто не успевали разгружать мясо налево, и вешали учётную программу, чтоб состав не уехал раньше времени. Потом героя собрался прихватить ОБХСС, и он по-быстрому завёл себе средство передвижения за границу СССР (еврейскую жену).

                                                                  +3
                                                                  так вот на каком тракторе ездит поросёнок Пётр!!)
                                                                –1
                                                                Вообще-то, аж ни разу. )))
                                                                Факт «разбавления» фонЯщего мяса (из 30-тикилометровой зоны) — реальность.
                                                                На, почитай выдачу поисковика…
                                                                  +3
                                                                  При чем тут выдача поисковика? С технической точки зрения сбоящая из-за радиоактивных коров ЭВМ полная чушь. Не о чем говорить.
                                                                0
                                                                Набирал некую фразу в ворде 2003-го офиса и после этого он падал. Проблема воспроизводилась. Был баг в проверке правописания.
                                                                  0
                                                                  Нашел свою заметку — это были ворд 97-го и 2к офисов.
                                                                    0
                                                                    У меня офис 2к3 падал на документе, в котором как-то оказался участок в «украинской орфографии». Фактически пустой абзац, где Word показывал, что здесь украинский язык. После открытия документа Word работал около 10 секунд и аварийно завершался, как только проверка орфографии доходила до этого участка.
                                                                    +1

                                                                    Правоспособность-способность лица иметь права и нести гражданские обязанности

                                                                      +7
                                                                      Иногда — лучше бы падал. Помнится, слово «мультиканальный» всё не давало ранним Word'ам покоя.
                                                                        +5
                                                                        ЕМНИП ещё «отмелькала» превращалась в какую-то странную географическую похабщину.
                                                                          +1
                                                                          А у меня как-то было вот такое. Хоть и без похабщины, но весьма любопытный экскурс в грамматику:

                                                                          image
                                                                            +3

                                                                            Очевидно, дело в этом:


                                                                            есть, форма глаг. быть

                                                                            суть, 3 л. мн. ч. от глаг. быть

                                                                            (Академический орфографический словарь)

                                                                              +1
                                                                              Я почти уверен, что это не был Word 1895. :-)
                                                                                +1
                                                                                в таком случае необходимо не множественное, а двойственное число 3 лица, то есть є҆ста̀ (-ѣ)
                                                                                0
                                                                                Очевидно, что должно быть «Есть два варианта, используется первый».
                                                                                  0
                                                                                  Там целиком звучит как «Если есть оба варианта…»
                                                                                    0

                                                                                    Тогда ок.

                                                                                  0
                                                                                  Он просто определил подлежащим «оба варианта», а сказуемым — глагол «есть» в значении «принимать пищу». С точки зрения Word корректным вариантом было бы «едят оба варианта».
                                                                                    0
                                                                                    Это было бы так для текста «Если ест оба варианта». А тут «есть», инфинитив. Даже если трактовать его как «кушать», то хоть для единственного, хоть для множественного числа инфинитив форму не меняет.
                                                                                      0
                                                                                      В том-то и дело, что вариант «Если ест оба варианта» подразумевает, что подлежащего тут нет («Если [кто-либо] ест оба варианта» — подлежащее «кто-либо»). Word же, судя по сообщению (подлежащее выражено количественным сочетанием с числительным «оба»), распознал в качестве подлежащего «оба варианта», т.е. ест не кто-то абстрактный, а именно эти «оба варианта», как бы странно это не звучало («Если [какую-либо еду] едят оба варианта»).
                                                                                        +1
                                                                                        Word же, судя по сообщению (подлежащее выражено количественным сочетанием с числительным «оба»), распознал в качестве подлежащего «оба варианта»
                                                                                        Я именно про это и говорю. Раз Ворд счёл это подлежащим, то вышеприведённую ошибку он имел бы право выдать лишь при обнаружении сказуемого в единственном числе — например, «ест» вместо «едят». То есть, если бы я написал «Если оба варианта ест [какую-либо еду]» — очевидная ошибка с несоответствием грамматического числа, и в этом случае ругань была бы по делу.

                                                                                        Но ведь у меня нету слова «ест», у меня — «есть». А слово «есть» можно распознать либо как инфинитив глагола «есть»=«кушать», который невозможно поставить во множественное число, либо как настоящее время глагола «быть», для которого форма множественного числа совпадает с формой единственного (старорусскую форму «суть» можно не учитывать). То есть как ни крути, а последовать рекомендации Ворда в данной ситуации невозможно при всём желании (без замены слова на что-то принципиально иное).
                                                                                +3
                                                                                А еще Ворд нервно реагировал на слово «стриптизёрша»
                                                                                +2
                                                                                Яр Тур.~
                                                                                +6
                                                                                И что Сергей в 80-м году подав заявление иммигрировал? Или также для дяди Сэма продолжал придумывать истории?
                                                                                  +2

                                                                                  В 86-м всё-таки. Может быть, он был "таки да"?

                                                                                    +1
                                                                                    Если «таки да» — то тогда, таки да, в Израиль
                                                                                    +2
                                                                                    Это скорее всего и есть самая фантастическая часть — «подал документы на эмиграцию» в восьмидесятых. В светящиеся коровы больше верится.
                                                                                      0
                                                                                      самая фантастическая часть — «подал документы на эмиграцию» в восьмидесятых

                                                                                      Если про вторую половину, то никакой фантастики — знаю нескольких уехавших.
                                                                                      Сложно, да, но реально.

                                                                                    +1
                                                                                    При каждом таком случае поезд выводили из эксплуатации, проверяли, но ничего не находили.

                                                                                    кабель дистанционного управления торможением двигателя (у поезда было по одному двигателю в обоих концах) отсоединён от стенки электрошкафа и лежит на реле, управляющем соленоидом туалетной заглушки…

                                                                                    facepalm.jpg
                                                                                      0
                                                                                      «туалетной заглушки…» — которая открывается, когда нажимаешь на педаль.
                                                                                      Согласно бритве Оккама, а почему нет?
                                                                                        +1
                                                                                        ну какая бритва Оккама в таких примерах. Она и так работает больше для людей нетехнических, которые сложную математику и физику не изучали, а уж в контексте данной статьи…
                                                                                        Уже на примере с ванильным мороженным по «бритве» надо было просто дурку клиенту вызвать.
                                                                                          0

                                                                                          Нет, потому что проблема воспроизводится. Вот если она не воспроизводится, то тогда вместо введения новых сущностей стоит рассмотреть более простое объяснение.

                                                                                      +2
                                                                                      Давным давно, когда 10BaseT был дорогим, а IOLA2 медленным шлюз между ними на досе, k9q и кучи пакетных дров периодически насмерть вис, долго пытались найти почему, но безрезультатно. Остановились на двух транзисторах и кондесаторе, резидентная программка пищала в писиспикер, импульсы оттуда рязряжали кондер. соответственно когда вся система подвисала этот нехтирый вачдог прижимал ресет к земле. Потом сей шлюз оброс и 25Мбитами и сотней и служил верой и правдой…
                                                                                        +1
                                                                                        Приблизительно также формировались все современные механизмы управления экономикой,
                                                                                        включая эмиссию и рекламу.
                                                                                        +2

                                                                                        Я когда-то убил несколько дней на поиск бага в прошивке для AVR. Там был интенсивный обмен одновременно по spi и uart и контроллер вис через случайные промежутки времени. Прошивал китайские arduino uno, и багу было подвержено порядка половины плат. При отключении spi (или spi совместно с uart, уже не помню), зависания прекращались. Поотключал все, оставил только обмен — зависает. Оказалось дорожки с spi идут прямо под кварцом (с обратной стороны платы) и, видимо, при интенсивном обмене вызывают сбои в генераторе. Перерезание дорожек или активация внутреннего генератора контроллера избавляет от бага. Так что если у кого-то uno падает при работе spi — пилите.

                                                                                          0

                                                                                          А мы как то делали устройство, типа разветвителя, он должен был по цифровому протоколу опрашивать датчики и переводить их 4 токовые петли. На токовых петлях устанавливался сигнал в зависимости от цифрового значения датчика.


                                                                                          Это устройство одновременно являлось и мастером и слейвом, т.е. для датчика было мастером, а для системы управления слейвом.


                                                                                          Когда датчик был подключен к устройству все было хорошо, а когда отключен… то петли все равно устанавливались в какое-то значение… Дело оказалось в том, что линии для работы с датчиком и системой были очень близко расположены друг к другу и когда устройство искало на линии датчик, запрос к датчику наводился на линию запроса от управляющей системы и устройство отвечало само себе, со всеми вытекающими… Т.е. оно реально разговорило само с собой, отвечало на свои же запросы, получало от себя значение и выводило его в петлю…

                                                                                            0
                                                                                            Напомнило историю с тепловычислителем СПТ961.2, который при определенных условиях отправлял запрос с внешнего 485 порта на внутренний, предназначенный для подключения дополнительных модулей. В результате эти самые модули отваливались с периодичностью от нескольких минут до пары недель и возвращались только перезагрузкой по питанию. Эта модель тогда были новинкой, багу победить не удалось — проще оказалось найти СПТ старой версии. А через пару лет увидел объяснение этого фокуса на форуме.
                                                                                            0
                                                                                            Оказалось дорожки с spi идут прямо под кварцом

                                                                                            Я тут недавно изучал датащит на один rtc со встроенным кварцем, и там английским по белому пишут:


                                                                                            Avoid running signal traces under the package, unless a ground plane is placed between the package and the signal line.
                                                                                            +17
                                                                                            Интересные истории )

                                                                                            Из аналогичных историй в моей жизни самая памятная история была в некоем большом агрохолдинге, когда от общей корпоративной сети отвалился большой и сильно удаленный свинокомплекс, со всеми прелестями типа вставших отгрузок и производства. Стояли на ушах полдня. В итоге выяснилось, что в стене (!) была замурована (!!) старая древняя давно не работающая маааленькая точка доступа.

                                                                                            Эта точка когда-то была настроена как шлюз, с прописанным IP-адресом, кончающимся на 1 (типа 192.168.1.1. – адрес шлюза по умолчанию, прописанный изготовителем). Точка была подключена к выч. сети витой парой, но выключена по питанию. Из стены, где была замурована эта точка доступа, торчал только провод питания с вилкой на конце.

                                                                                            Когда-то, когда точку уже сняли с боевого дежурства, ее просто отключили по питанию, но поленились физически отключить и демонтировать со стены. А потом еще и заштукатурили при очередном ремонте..)

                                                                                            А в один прекрасный день в закуток заглянула не в меру старательная уборщица, увидела провод с вилкой, торчащий из стены, розетку 220В рядом, подумала, что непорядок, и включила вилку в розетку. Точка доступа заработала, и в сети оказалось 2 шлюза с двумя одинаковыми конфликтующими адресами, из-за чего сеть тут же встала на дыбы ))
                                                                                              +1
                                                                                              … а еще бывают принтеры с вебинтерфейсом, который внезапно может возомнить себя 192.168.0.1 и DHCP сервером…
                                                                                              … а еще бывают уборщицы которые длинный пачкорд втыкают в розетку, устраивая кольцо…
                                                                                                +3
                                                                                                Один умудрённый админ мне рассказывал потом, что именно по аналогичным причинам никогда не назначает реальным шлюзам адрес с единичкой на конце. )
                                                                                                  0
                                                                                                  Вот только «найдется болт с левой резьбой», я встречал железки, которые отхватывали себе не .1
                                                                                                    0
                                                                                                    Умудрённые одмины используют дхцп-снуппинг и не заморачиваться такой ерундой.
                                                                                                      0

                                                                                                      Не просто умудрённые, а работающие там, где могут позволить купить Каталист или подобного класса девайс. Хотя сейчас может уже всё это добро вместе с арп фильтрами в микротики завезли...

                                                                                                        0
                                                                                                        Как бы практически во всех управляемых l2 (которые в руках держал) это счастье есть. Только его включать надо.
                                                                                                      0
                                                                                                      И при приеме на работу уборщиц проверяет их на склонность к необузданному хакерству.
                                                                                                  • НЛО прилетело и опубликовало эту надпись здесь
                                                                                                      0
                                                                                                      Я слышал эту байку в двух вариациях: в одной фигурировал Novell Netware 4.11, в другой – OS/2 Warp 3.
                                                                                                        +2
                                                                                                        И то и то может работать годами и десятилетиями (на самом деле warp3, до определённой ревизии ядра, перезагружалась по переполнению раз в 46 дней аптайма), пока не сдохнет железо. А железо давеча, было гораздо пизже чем нонеча.Так что могло быть как с одним так и с другим. Возможно это действительно две разные байки.
                                                                                                      0
                                                                                                      del
                                                                                                        +4
                                                                                                        Я могу вспомнить историю из серии «Ты суслика видишь? А он есть!»
                                                                                                        В Беркли или в MIT-е шла инвентаризация парка компьютеров. И шла она себе шла, пока не выяснилось что один из серверов в сети работает, но физически его нигде нет. Проверяют, все серверы на месте. Погасили все сервера, но этот фантомный сервер продолжает работать, и нести свет людям. Все в шоке. Начинают ходить по кабельному хозяйству и находят этот сервер. Его — замуровали. Точнее комнатушку где он был установлен. Так и работал он десяток лет в заключении.
                                                                                                        ЕМНП это был сервер от SUN
                                                                                                          +1

                                                                                                          Эту историю с отечественным колоритом еще на ithappens рассказывали.

                                                                                                            0

                                                                                                            Ну вот и интересно, у кого же она произошла на самом деле, а кто пересказывает, сменив в очередной раз место события...

                                                                                                              0
                                                                                                              За что купил, за то и продаю. ЕМНП прочитал я её в архиве фидошной эхи в 93-94году. Но вероятнее всего что это было в 94году.
                                                                                                                +1

                                                                                                                Тогда это не в exUSSR :) Тут вычтехника была настолько дорогая до конца 90-х, что с неё пылинки сдували.

                                                                                                              +2
                                                                                                              Я потерял свой ноутбук… Ну, как потерял… я его пингую, я могу зайти на него по удаленному доступу, я просто не знаю, где он есть...
                                                                                                              +3
                                                                                                              У нас была подобная история. В выходные выключали свет, соответственно вырубили всё что можно, в понедельник, первый пришедший должен был включить всё, что надо.
                                                                                                              Всё нормально, всё работает, но люди жалуются, что пропала работа за 2 месяца. Мысли про какой-то аварийный откат файловой системы, потерю данных, всё такое. Сведения разрозненные. Всё работает, но что-то не то.

                                                                                                              По итогу оказалось, 2 месяца назад мигрировали сервер на новое железо, старый выдернули из сети и оставили разборки с ним до лучших времён. При включении сотрудник решил, что не порядок, что в сервер не воткнуто питание (ага, провод выбило вместе с пробками) и воткнул старый, который и захватил власть.
                                                                                                              +7

                                                                                                              Мне коллега когда-то рассказывал такую историю: у него на предприятии, на котором он начал работать админом в конце девяностых, была выделенная линия на склад в старом здании на окраине города, организованная двумя модемами U.S. Robotics Courier по ведомственной телефонной линии. И там часто падала связь в рабочее время, на полчаса-час, в результате на это время становилась отгрузка продукции со склада. В ночное время все ок, а в дневное — регулярно, раз или два в день, причем это продолжалось уже буквально полгода. Грешили на криворукость персонала склада.


                                                                                                              И пока никто не разобрался, в чем причина обрывов, но работники склада утверждали, что происходит это кто-то идет мыть руки под краном в уборной. Моешь руки — вынужденный перерыв. В главном офисе в это категорически отказывались верить.


                                                                                                              В результате мой коллега начал искать как именно проложен телефонный кабель, и обнаружил, что в шахте с телефонными проводами также идет небольшой участок канализационной трубы от злополучного умывальника. когда шахту вскрыли, то обнаружили, что именно в этом участке слегка подтекает канализационная труба и вода из нее льется на скрутку лапши выделенной линии. Пара намокла, "короткое" — связь пропала, пара подсохла — связь восстановилась.

                                                                                                                +9

                                                                                                                А где 500-mile email? Это же классика как и ванильное мороженное.
                                                                                                                Еще где-то на просторах была байка, а может достоверная информация о том как Билл Гейтс собеседовал нового разраба в отдел по разработке Excel. И якобы задал вопрос про реализацию одного компонента, что намекает на то что Билл всё же умел программировать.

                                                                                                                  –1
                                                                                                                  «намекает на то что Билл всё же умел программировать» — может, просто проходящая мимо мокрая уборщица делегировала ему часть своего недюжинного интеллекта?
                                                                                                                  +15
                                                                                                                  В 1980-х мой ментор Сергей писал ПО для СМ-1800, советского клона PDP-11.

                                                                                                                  Хм, не сразу обратил внимание, но в истории про коров есть одна очевидная фактическая ошибка:


                                                                                                                  СМ-1800 — на восьмибитном процессоре КР580ВМ80А, клоне i8080, так что он никак не мог быть клоном шестнадцатибитного PDP-11.

                                                                                                                    +13

                                                                                                                    Так!
                                                                                                                    Начнете нудить — будете сами сказки придумывать!
                                                                                                                    Но только чтобы было с Кровавой Гребней, поросенком Петром и прочими трендовыми ништяками.

                                                                                                                      +2
                                                                                                                      История с коровами просто светится от клюквы. Понятно же, что кто-то придумал.
                                                                                                                      +2
                                                                                                                      Когда Джеймс приехал в следующий кинотеатр, он задумался о том, как объяснить своему руководителю, что он только что пролетел 800 км, чтобы отключить скринсейвер

                                                                                                                      А-а-а!.. (стук башкой о стол)
                                                                                                                      Сколько же раз я ездил через весь город, чтобы включить "пилот"!

                                                                                                                        +3
                                                                                                                        Старая байка: Работу электроподстанции мониторил старенький компьютер, который периодически подвисал. Иногда вместо выезда для перезагрузки компьютера обесточивали микрорайон.
                                                                                                                        • НЛО прилетело и опубликовало эту надпись здесь
                                                                                                                            0
                                                                                                                            Теперь эту кнопку с завидной легкостью заменил айфон!
                                                                                                                              +6

                                                                                                                              Слышал ещё вариацию с домофоном в офисе, припаянным к светодиоду флопика на серваке, который в свою очередь расшарен и выведен обитателям офиса на рабочие столы. В дверь звонят — тык в ярлык, светодиод загорелся, домофон открылся :-)

                                                                                                                                0
                                                                                                                                Если флопика нету — и NumLock сойдёт.
                                                                                                                                  0

                                                                                                                                  А его можно по локалке расшарить без бубна?

                                                                                                                                    0
                                                                                                                                    RDP? Ведь даже входить в систему необязательно.
                                                                                                                                      0

                                                                                                                                      Ну, это сессию держать надо, уже не совсем то, но вариант

                                                                                                                                  +1
                                                                                                                                  Там всё проще было. Комп с треем сидюка, напротив кнопки домофона. Тому компу, удалённо, достаточно было дать команду eject. Даже видео было на ютубе, только теперь его хрен найдёшь.
                                                                                                                                  • НЛО прилетело и опубликовало эту надпись здесь
                                                                                                                              +1
                                                                                                                              А вытащить дискету?
                                                                                                                              Проехать 30 км, нажать кнопку выброса дискеты, эни кей, назад 30км… Эпик же…
                                                                                                                                +8
                                                                                                                                В службу поддержки HP обратились с вопросом, как можно вынуть кассету из стримера. Ответ — нажать кнопку на передней панели. А если стример находится на спутники на орбите?
                                                                                                                                  +1
                                                                                                                                  Для того туда и посылали Белку со Стрелкой.
                                                                                                                                  Это даже запечатлели их фанаты — фидошники.
                                                                                                                              +1
                                                                                                                              Эх. вот если бы еще врачи всегда анамнез собирали как с аллергией автомобиля на мороженое…
                                                                                                                                +1
                                                                                                                                Тогда иппохондрики «забьют весь канал».
                                                                                                                                0
                                                                                                                                Вчерашний случай — юзер жалуется, что не может распечатать. Подходишь к МФУ и включаешь его, а оно, на секундочку, с экраном и светящейся кнопкой «Вкл». А вы говорите: «скринсейвер».
                                                                                                                                  +6
                                                                                                                                  ой, помню историю гдето 15 летней давности…

                                                                                                                                  был комп, на нем чёто типа Windows 2003 server, в один прекрасный момент не включается монитор, нивкакую… в безопасном режиме — норм, биос, процесс загрузки — норм, нормальный режим — пропадает окно загрузки — монитор сразу в стендбай

                                                                                                                                  я сутки голову ломал. кое как поставил туда vnc… законнектился… а там висит окно «ATI Radeon, обнаружено новое устройство VGA Монитор, продолжить?» жму ДА!!! монитор включается — всё работает

                                                                                                                                  это всё к историям, keyboard not found, press F1 to continue
                                                                                                                                    +2
                                                                                                                                    keyboard not found, press F1 to continue
                                                                                                                                    дома одна из материнок с таким биосом, даже не смеялся уже
                                                                                                                                      0
                                                                                                                                      80286?
                                                                                                                                        0
                                                                                                                                        У меня такое было на моём первом компе, это был AMD 5X86-133.
                                                                                                                                          0
                                                                                                                                          Это довольно странно, к тому времени в основном остались AWARD и AMI, которые выводили Keyboard not found or keyboard error.
                                                                                                                                            0
                                                                                                                                            Я такое видел как минимум на авардовском биосе времен P2
                                                                                                                                              0
                                                                                                                                              Award 4.50/4.51/6.0 не имел в чистом виде фразы Keyboard Not Found, Press F1 to continue. Там добавка всегда шла, либо Keyboard locked, либо Keyboard error
                                                                                                                                                +2
                                                                                                                                                Боюсь что я версию биоса не смогу вспомнить.
                                                                                                                                                потом собственно дословно фраза не важна, там судя по всему был шаблон в стиле
                                                                                                                                                [error], Press F1 to continue
                                                                                                                                                и error мог быть и «Keyboard error»
                                                                                                                                                собственно это и объясняет маразматичность фразы, потому что никто собственно особо не задумывался что это будет именно так выглядеть
                                                                                                                                                  0
                                                                                                                                                  да, что бы прямо F1 — тоже поспешил ответить, но суть была именно что-то нажать и никак иначе, и да — биос сильно новее 286, от P4 и немного выше что-то
                                                                                                                                                    +4

                                                                                                                                                    А между тем такое ожидание было вполне оправданно.


                                                                                                                                                    Это сейчас мы избалованы ЮЗБ с его подключением на горячую и прочими плюшками современного железа, а обычный клавиатурный интерфейс, который ещё на 8042 — таких приколов не имел, оторвал клаву в процессе работы или забыл при старте — будь любезен, переинициализируй.


                                                                                                                                                    И когда биос выводит это самое "Keyboard Not Found, Press F1 to continue" — он в цикле дёргает процедуру инициализации клавы на 8042, чтобы, если это таки просто коннектор вывалился, или что-то в том роде, был шанс воткнуть её на место и нажатием подтвердить: всё ок, клаву вернули, можно ехать дальше.


                                                                                                                                                    Иначе пришлось бы увидеть, что ДОС догрузился, а клавиатуру подключить забыли — и поехали, опять в ребут по новой, а уж если и диск без автопарковки, а клавиатуры чтоб его запарковать-то и нету…

                                                                                                                                                      +2
                                                                                                                                                      Вот только PS/2 & AT/DIN как и XT/DIN не очень любили подключение клавиатуры на горячую, такое развлечение вполне себе приводило иногда к выгоранию порта.
                                                                                                                                                        0

                                                                                                                                                        Мне каким-то чудом везло всегда пока что, хотя может это было в основном на ранних — в конце концов, одно время были и материнки, у которых кодек горел при втыкании на горячую наушников сзади :-)

                                                                                                                                                          0
                                                                                                                                                          PS/2 = XT ведь? Да, могут сгореть при переключении.
                                                                                                                                                          С AT DIN 5 ничего не происходит — много раз перетыкал из-за кривого корпуса.
                                                                                                                                                            0
                                                                                                                                                            PS/2=AT по сигналам, но не по корпусу разъёма — начиная с 80286 и по сей день там, где он ещё остался
                                                                                                                                                            XT — разъём как у AT но и протокол и распиновка другие. Своими руками я спалил эту бандуру на XTшке, паре 486ых и чём-то на базе Pentium-4.
                                                                                                                                                            +3
                                                                                                                                                            Именно тогда было вбито в подсознание, путем нескольких выгоревших COM&LPT портов, если подключаешь периферию обесточь все, и подключай только к одной розетке.
                                                                                                                                                            А еще перед началом работы померь напряжение в сети, вдруг там овервольтаж? От него у EPSON LX800 легко выгорал БП (245В «и здравствуйте девочки»). Или ундервольтаж (150В) и привет тебе от TurboXT «No ROM BASIC. System halted»
                                                                                                                                                      +1
                                                                                                                                                      Лично вчера наблюдал это сообщение на своей материнке 2012 года выпуска. Надо было быстренько проверить, стартует ли она вообще, включил без всей периферии (только монитор), ну и узрел сакральное «Keyboard not detected, press F1 to enter BIOS» (цитату дословно не запоминал, но суть такая).
                                                                                                                                                        +1
                                                                                                                                                        Угу, я так недавно ставил железяку от vipnet в коммутационный шкаф. На столе — всё прекрасно работает. Отключаешь периферию, засовываешь в шкаф — не грузится. Шкаф под потолком, монитор туда так просто не засунешь. Минут 30 где-то развлекался, пока не дошло.
                                                                                                                                                  0
                                                                                                                                                  В 2000-х такое встречалось на новых материнках. С тех пор обязательно в биос отключаю пункт ожидать F1. На всякий случай.
                                                                                                                                                +3
                                                                                                                                                С видеокартами та ещё засада. Поставил на комп со встроенной видеокартой отдельную карту, в биосе переставил на «использовать только внешнюю видеокарту». А через какое-то время понадобилось ее оттуда достать. Вытащил корпус из-под стола, отключил все провода, раскрутил корпус и вытащил карту. Переставил в другой комп. Затем все обратно собрал. Включаю-а сигнала на монитор нет. Потому что забыл убрать «использовать только внешнюю видеокарту». Раскручиваю второй комп, достаю карту, раскручиваю первый комп, ставлю карту туда, включаю и в биосе активирую встроенную. Затем все обратно собираю и прикручиваю.
                                                                                                                                                  +1
                                                                                                                                                  У меня было веселее. Плата mini-ITX, какой-то Gigabyte, со встроенной видяхой. Что-то в BIOS'е переклинило и оно само переключилось на внешнюю видяху, которой нет. На плате только обычный PCI, а времена не столь давние. Хорошо у меня нашлась PCI'ная видяха, зашёл в биос, поменял. BIOS после этого обновил.
                                                                                                                                                    +2
                                                                                                                                                    А сбросить настройки биоса не пробовали? Что вы, что v1000
                                                                                                                                                      0
                                                                                                                                                      Тоже сейчас об этом подумал. Батарейку кажется вытаскивал, но это не помогло (полагаю, что и не должно было, т. к. там уже настройки в ПЗУ). Опять же не было уверенности, что проблема в настройках.
                                                                                                                                                        +1
                                                                                                                                                        Батарейку кажется вытаскивал, но это не помогло (полагаю, что и не должно было, т. к. там уже настройки в ПЗУ)

                                                                                                                                                        Ну здрасти, там CMOS (в смысле КМОП) память, энергозависимая. Просто батарейку нужно вынимать при снятом с материнской платы питании и или перекидывать специальную перемычку «Clear CMOS» на время, или замыкать контакты в слоте для батарейки, или долго (десятки секунд и минуты) держать батарейку вынутой.
                                                                                                                                                      0

                                                                                                                                                      Я в университете делал программу на ассемблере, которая работала в защищенном режиме процессора, запускалась под DOS и сама его активировала. Тестировал на своем компе, DOS запускал с флешки, которую BIOS определял как диск C. Один раз я что-то напортачил со стеком, управление передалось неизвестно куда, и после перезагрузки флешка стала определяться как диск A. Видимо управление попало на последовательность байт, которая что-то перезаписала в коде BIOS. DOS загружался нормально, но то ли компилятор ошибку выдавал, то ли файл какой-то не читался, в общем продолжать работу я не мог. Починилось перепрошивкой BIOS-а.

                                                                                                                                                      +2
                                                                                                                                                      Возможно проще было сбросить биос.
                                                                                                                                                      Кстати, о сбросе биоса. Был у меня на работе самосборный сервер Hyper-V на десктопных компонентах. Даже слишком десктопных. Материнаская плата в нём была геймерская Asus RoG, она вся светилась и была предназначена для разгона. Для упрощения этой задачи, у неё прямо на заднюю панель выведена кнопка сброса биоса. Однажды при физическом перемещении компа её случайно нажали и не заметили. Комп продолжил нормально загружаться и в целом работать, но перестал выполнять основную функцию — не запускались виртуалки. А всё потому, что в биосе поддержка виртуализации по умолчанию отключена. Не то что бы это было сложно найти, но я этого совершенно не ожидал, поэтому проверил только тогда, когда другие возможные причины совершенно закончились.
                                                                                                                                                        +1
                                                                                                                                                        А всё потому, что в биосе поддержка виртуализации по умолчанию отключена.

                                                                                                                                                        Вот кстати да, тоже недоумеваю, зачем отключают виртуализацию и некоторые функции по её ускорению.
                                                                                                                                                          +1
                                                                                                                                                          А я вот два года назад очень радовался что выключатель этот в биосе был.
                                                                                                                                                          Прилетело какоето обновление винды, из-за которого при активации hyperv система уходила в циклическую перезагрузку, если активна опция виртуализации в биосе.
                                                                                                                                                            +1
                                                                                                                                                            Опция это хорошо, спору нет. Непонятно, почему она отключена по умолчанию.