Я разрабатываю СПО. В силу особенностей аппаратной реализации программы для одних модулей контейнера пишем мы, для других — отделение за 2000 км от нас. В мои обязанности входит тестирование присылаемых версий и контроль взаимодействия частей ПО. Грубо говоря, от меня зависит, будет работать сборная солянка или нет.
Присылают как-то версию. Провожу отладку, устраняю баги — вроде отдельно всё работает. Отдаю нашему программисту код, конфиги и файлы параметров. Печатаю на бумаге чёткую инструкцию по сборке.
Вызывают: дескать, всё сделали по написанному, оно иногда работает, но чаще нет. Смотрю буферное ОЗУ — а там каша вместо параметров. Спрашиваю программиста, где данные из файлов. «Я всё загрузил». Показывает, как грузит. Всё окей, но после запуска программы лезет та самая каша.
Ковыряюсь целый день, гоняя прогу по шагам. Программа считывает массив из буферного ОЗУ — и капец. Перебираю буфер, копирую массив, сравниваю с эталоном из файла. Опа — там же нули должны быть, а вместо них месиво, причём каждый раз разное! Писать чушь в буфер может как иногородняя программа, так и наша. Их не пишет — зуб даю. Зову программера: «Не надо считать меня дураком!» Проверяю его творение — не пишет. Так, тупик.
Второй день. Начальство злое, я в их глазах — тормоз прогресса. Но ведь отдельно всё работало! Вручную гружу нашу программу, присланную программу, файлы параметров. Всё работает. Делаю прошивку — попался, гад! Опять зову программиста.
— Признавайся.
— Я ничего не делал!
— Ага, не делал! Вот моя прошивка, вот твоя. Куда килобайт данных пропал?
— Каких данных? Там нулевые блоки между массивами были, я их вырезал. На фиг они нужны? Буферное ОЗУ маленькое, я код оптимизировал.
— А тебе в голову не приходило, что ноль — это тоже число?