Работал я тогда рядовым тестировщиком в компании Akvelon, достаточно заметном аутсорсе на локальном рынке. Аутсорсили в основном заказчиков из США: Microsoft, некоторых мобильных операторов, крупные фирмы по производству юридического софта. И был там отдельный продукт, который занимался трекингом времени юристов: была серверная часть с БД и удобным веб-интерфейсом, была мобильная приложенька для отслеживания звонков на Blackberry (да, это еще до Андроида и iOS), и было десктопное приложение, которое умело отслеживать активность пользователя за компом в фоновом режиме. Нужно это было не для сурового внешнего контроля (ах ты в фейсбучике сидишь вместо работы!), а для выставления счетов за время работы юриста.
Тестировали мы по-разному, в том числе проводили длительные корридорные тесты, устанавливая наше десктопное приложение (оно так и называлось - Desktop Extension, или DE) на компы во всем офисе.
И так получилось, что только на одной машине, у HR, мы видели редкий плавающий баг: наше приложение внезапно переставало передавать данные. Когда заглядывали на машину - обнаруживали, что приложение выключено. Причем признаков креша не было - логи были пустые.
Локализовать проблему мы пытались полгода, и перепробовали почти все: расширяли логи, ставили дополнительные мониторинги через ProcMon, грешили на систему (популярная тогда Vista), устанавливали на схожие машины других юзеров, запускали в виртуалки, меняли время и дату. Не помогало ничего: с непонятной периодичностью: иногда - раз в три дня, иногда - раз в месяц, мы обнаруживали выключенное приложение. Только на этой машине: ни другие юзеры, ни заказчик, ни пользователи заказчика такого не находили. При этом баг был очень неприятный: все-таки юристы за фоновыми приложениями не следят, и могут потерять пару-тройку дней своего дорогого времени.
В конце-концов великолепный, без шуток, программист нашего проекта Николай (видеопоздравление которому было вторым видео на моем ютуб-канале, и нет, вы его не увидите) решил написать собственный драйвер для отслеживания этого приложения. Для этого ему потребовалось освоить C, что он успешно сделал, вроде как даже меньше чем за 21 день. После этого мы еще около месяца тестировали драйвер на стабильность - не хотелось бы, чтобы он снес систему сотрудника в BSOD. Но все обошлось, и мы установили этот драйвер на нашу подозрительную машину. Забегая вперед - после всего действа про драйвер мы забыли, он проработал там еще полгода, и ни разу не вызвал ни одной системной ошибки. Я ж говорю, великолепный программист.
И где-то через 2 недели мы обнаружили вот что: наша HR пользовалась одним из приложений, специфичных для ее деятельности. И у этого приложения был свой процесс, который назывался Desktop Extension.exe. Ровно так же, как наш. Поэтому во время выключения оно вызывало убийство не только своего процесса, но и нашего. А так как запрос был штатным - приложение штатно закрывалось, и в логи ничего не писало. В результате мы переименовали свое приложение в [companyname]de.exe, и таинственные падения прекратились.
Это, наверное, был самый интересный баг. Еще был случай, когда нам пришлось нарушать закон для воспроизведения бага, но об этом как-нибудь в другой раз :)
#байки