kika: (Default)
Вспомнил тут историю в контексте другого обсуждения, и решил повеселить публику.

Меня как-то наняли спасать проект с огромной базой кода на С++. Мягкий реалтайм, система управления буровой установкой для горизонтального бурения. Там был странный плавающий баг, который на симуляторе приводил к потере головки, то есть это нельзя было выпускать ни в коем случае. Они к моменту моего прихода искали баг всей командой уже три месяца. Я нашел баг (это было непросто и это оказался наш любимый off by one) исправил его, победно затрубил и запустил симулятор. Через 10 часов потерял головку. Стал искать баг опять. Нашел его снова, неисправленный. Тут Зоркий Глаз начал что-то подозревать и обнаружил 6 (шесть!) копий класса, который отвечал за считывание статуса и подачу команд на управляющую железку. Просто во всех местах где надо было пользоваться API этого класса, им надо было этот API чуть модифицировать и класс просто копировали, называли по-другому, подпиливали API и пользовались.

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

Profile

kika: (Default)
kika

January 2017

S M T W T F S
1234567
89 1011121314
151617181920 21
22232425262728
293031    

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 21st, 2017 12:23 pm
Powered by Dreamwidth Studios