Re: Самый интересный баг, с которым вы возились
От: 3V Россия  
Дата: 20.09.13 17:57
Оценка:
Здравствуйте, abibok, Вы писали:

A>Какой баг запомнился больше всего? Не по трудоемкости, а скорее по интересности.


Давным-давно было. Проект в VC6. Падало рандомно где угодно.
Бился долго. Думаю, что это все-таки какая-то хитрая бага в компиляторе.
Там был класс, в котором была переменная-член, являющаяся экземпляром класса-обертки для ADO-рекордсета. Т.е. этот класс наследовался от автоматически сгенеренного студией класса-обертки над COM-интерфейсом рекордсета. За ним шел обычный числовой мембер. Т.е. что-то вроде этого:

class COLOLO : public что-то
{
...
CADORecordset m_oRecordset;
int m_nAnyNumber;
}

и вот при записи в m_nAnyNumber переписывался, похоже, указатель на интерфейс в m_oRecordset.
Решилось все установкой выравнивания структур в 4 байта для всего проекта.
Короче, при выравнивании в 8 байт адреса m_nAnyNumber и this в m_oRecordset совпадали
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.