metaclass: (Default)
[personal profile] metaclass
"Сначала мы себе создаем проблемы, а потом их героически решаем."

Проявился, значит, в одном из сервисов, призванных работать 24/7, странный баг.
Все работает, никаких исключений, никаких признаков ничего плохого - но данные в базу не попадают. Появляется ну раз в месяц, может быть. Бесил, ибо был необъясним.
Добавил в сервис консоль удаленного управления, через телнет. Запряг весь наш саппорт при таких симптомах ничего не делать, кроме поднимания меня из гроба.
И вот сегодня как раз удачно сошлись звезды: опять баг, саппорт меня саммонил, у клиента нормальный сервак, сервис обновлен, консоль есть, можно спокойно изучать.
Включил консолью всю отладку, сижу втыкаю в DebugView/OutputDebugString, параллельно рассматривая код.
И вижу странное: все работает, кроме функции которая скидывает данные из расчетного кэша в БД. А функция, в целях снижения нагрузки на БД окружена таймером, который разрешает ей работать не чаще чем раз в определенное время, обычно 15 секунд. И, что характерно - реализовано это на GetTickCount, который хоть и склонен к переполнению, но при адекватной реализации это не мешает. А реализация там, ВНЕЗАПНО, неадекватная - два обращения к GetTickCount, вместо одного.
Смотрю значение GetTickCount - 1.25 дня. Смотрю данные - последний раз пришли в 7 часов утра. Туплю. Потом доходит - 7 часов утра ВЧЕРА, т.е. 1.25 дня назад. С приездом вас, называется.

Сервис останавливать нежелательно - надо бы и данные скинуть в базу, а то потом придется делать немного хитроватую процедуру их повторной передачи.
Значит, что я делаю:
1) Достаю строго нужную версию сервиса из SVN.
2) Собираю с отладочной информацией.
3) Копирую файлы отладочной информации клиенту рядом с его работающим сервисом.
4) Ставлю Debugging tools for Windows
5) Подключаюсь к сервису
6) Ставлю bp на нужный метод.
7) Ловлю вызов.
8) Дохожу до реализации if в виде cmp edx, eax / jbe ...
9) Меняю значение регистра edx на правильное, метод идет работать как положено.
10) Profit. Данные скинулись в базу. Переменная установилась в кошерное значение. Еще есть 49 дней до следующего переполнения, можно успеть починить исходники.

Date: 2012-01-04 12:57 pm (UTC)
From: [identity profile] jdevelop.livejournal.com
респект, уважуха

а что нынче кошерное по типу SoftIce присутствует?

Date: 2012-01-04 01:03 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Вроде тот же windbg(KD в консольной ипостаси) умеет, причем вплоть до коннекта с соседней машины по ком-порту или firewire.

Date: 2012-01-04 01:49 pm (UTC)
From: [identity profile] nicka-startcev.livejournal.com
оно еще по УПШ умеет, но там затейливые грабли - зависимость от сорта винды и аппаратного сорта УПШ-контроллера, а их (типов) в реальности заметно больше трёх.

Date: 2012-01-05 10:53 am (UTC)
From: [personal profile] ex0_planet
От УПШ там требуется ровно одно: поддержка debug mode первым EHCI контроллером, к сожалению, об этом нигде не пишут -- приходится выяснять методом проб и ошибок. Ну и небесплатный донгл еще нужен, да.

Date: 2012-01-05 11:11 am (UTC)
From: [identity profile] nicka-startcev.livejournal.com
>поддержка debug mode первым EHCI контроллером

Вот-вот. Даже отэнумерейтить по-человечески не могут.

Date: 2012-01-05 10:54 am (UTC)
From: [personal profile] ex0_planet
KD -- это _только_ для соседней машины, режим отладки себя там есть, но он крайне ограниченный, поскольку весь дебаггер крутится как нормальный процесс.

Date: 2012-01-04 01:12 pm (UTC)
From: [identity profile] skif-by.livejournal.com
Да, windbg, как ребе советует. К сожалению, SoftICE R.I.P.

Date: 2012-01-04 01:49 pm (UTC)
From: [identity profile] nicka-startcev.livejournal.com
софтайс рип примерно с появлением пси-экспресс. :)
если машина антикварная, без пси-экспресс, то скорее всего софтайс заведется.

Date: 2012-01-04 04:04 pm (UTC)
From: [identity profile] thedeemon.livejournal.com
на фоне соседних постов "пси" читается как глагол

Date: 2012-01-04 04:54 pm (UTC)
From: [identity profile] nicka-startcev.livejournal.com
причём, не относящийся к психике.

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Oct. 1st, 2025 09:04 am
Powered by Dreamwidth Studios