Загадка

Где-то с полторы недели назад поступило письмо от клиента, что в новой версии программы не работает некоторая функциональность. Это, конечно, меня сильно удивило. Как такое может быть??? В релизе и что-то не работает. Явно ощущался подкол) Шучу) Но проблема была в том, что клиент утверджает, что в предыдущей версии программы все работало, а вот в новой не работает. Я проверил всю историю текущего репозитория. Этот кусок кода вообще не трогался.

В итоге, что мы имеем. У клиента Win 7 x64. Он удаляет старую версию программы, ставит новую. И жизненно важный функционал отваливается. Надо как-то проблему разгребать.

Чтение исходного кода показывает, что функционал завязан только на реестр и только из-за реестра может отвалиться. На всякий случай решаю вопроизвести всю ситуацию у себя. Но тут две проблемы 1) у меня машина x86 а в ней своя ветка реестра 2) необходимое стороннее ПО стоит 500 баксов, взаимодейтвие с которым и не работает. На машине коллеги(x64) для чистоты эксперимента по форумам эмулирую реестр. Все замечательно работает((( Исследуем реестр клиента. Письмами… Я ему ветку- он мне описание. Я ему ветку- он мне описание. Реестр тонко намекает что клиент недоговаривает. Неоходимые ветки есть, софт стоит, но значения отсутсвуют. Не могла предыдущая версия программы работать.  Ощущение неприятное.

Советую клиенту прописать значения ручками.  Функционал стартует, но отваливается в другом месте. Мне приходит скриншот ошибки. На неизвестном мне языке. Тут спасибо автоопределению языка в гугл переводчике. Я набрал латиницей похожие символы, а он мне подсказал что это французский и перевел ошибку. Суть ошибки: olololo.dll не является win32 приложением.  Читаю исходный код. Вылетает в библиотеке kernel32.dll. Эксперимент: пытаемся грузануть этой библиотекой какую-нить dll на x64 машине. Грузит((( А если x86 dll- вылетает ошибка.

И вот тут я все понял!

Разгадка:

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

Мораль:

Мыслить надо шире… Да, я знаю, это бесценный совет до которого трудно додуматься!

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

Но мне еще очень сильно повезло с клиентом. Он технический специалист с большим опытом. В университет пошел в 89 году) Спасибо линкед ину))))  А еще он ни разу не написал мне «Do you speak English?». Тоже очень приятно)))

ПОДЕЛИТЬСЯ:

3 комментария

  1. ну согласись, что это очень приятно решать такие косяки)) сразу скилл прокачивается на несколько пунктов))

    1. Соглашусь, пожалуй))

Добавить комментарий для admin Отменить ответ