четверг, 13 июня 2013 г.

Коллега сегодня разбирался с нашими непроходящими тестами под XE4

Коллега сегодня разбирался с нашими непроходящими тестами под XE4. Которые ПРОХОДЯТ (стабильно !!! и "МНОГИЕ годы") под Delphi 7. И нашёл ОЧЕНЬ странный баг. Наш. Где мы "заложились" на стратегию работы менеджера памяти. На самом деле сами того не подозревая. Баг был поправлен. Тесты заработали.

Баг на самом деле - очень показательный. Правда - не знаю - с какого конца его бы начать описывать.

В двух словах. "Совсем на пальцах". Брался указатель на объект. И "зачем-то" он считался его уникальным идентификатором. И со сменой стратегии менеджера памяти - ЗНАЧЕНИЕ этого указателя - СТАЛО вести себя ПО-ДРУГОМУ.

Почему? История уходит в глубь времён. "Говнокод" - спросите вы? "Ну наверное" - скажу я. Если бы это был МОЙ код, то я бы так и сказал. Но поскольку код чужой - скажу осторожнее. "Наверное на то были веские причины".

Суть истории пока такова - смена стратегии распределения памяти - может принести "сюрпризы", о которых многие даже не задумываются.

ОЧЕНЬ хотелось бы описать - суть РЕАЛЬНОЙ проблемы, но я пока думаю - как это правильнее сделать.

P.S. Под XE3 такое кстати "меньше" проявляется. Но это правда пока ни о чём не говорит.

P.P.S. Я как собака - "понимать - понимаю, а сказать - не могу".

Комментариев нет:

Отправить комментарий