Здравствуйте, Kubyshev Andrey, Вы писали:
KA>ВСЮ Неделю ловил баг
KA>Кусок кода был помечен как
KA>#ifdef WIN64 KA>... KA>#endif
KA>вместо
KA>#ifdef _WIN64 KA>... KA>#endif
KA>причем кто-то (я подозреваю что я) опредеделил в дебажной версии WIN64, а в релизе нет. KA>Я ВСЁЁЁЁ ПЕРЕРЫЛ. Нашел много других мелких багов ...
Здравствуйте, Kubyshev Andrey, Вы писали:
KA>ВСЮ Неделю ловил баг :crash: :crash: :crash: :crash:
Типичный "заскок сознания", или в более современной терминологии "глаз замылился". Такие тяжелее всего ищутся.
Искренне поздравляю с поимкой.
KA>причем кто-то (я подозреваю что я) опредеделил в дебажной версии WIN64, а в релизе нет.
интересно, зачем определил-то.
Кстати, чем peer review полезно, это именно тем, что такие вещи легче находятся именно свежим взглядом.
Это еще что... Я, помниться, как-то пытался пофиксить один хитрый баг. Уже чего только не делал: и так условие поменяю и этак, и такой воркараунд задумаю и по другому, а он, зараза, все вылазит и вылазит Дошел до крайности — удалил всю функциональность в которой он проявлялся, а баг выжил ... Мистика. Ушел спать с тревожным сердцем Оказалось, правил резервную копию исходников, а компилировал, понятное дело, рабочую
H>Это еще что... Я, помниться, как-то пытался пофиксить один хитрый баг. Уже чего только не делал: и так условие поменяю и этак, и такой воркараунд задумаю и по другому, а он, зараза, все вылазит и вылазит Дошел до крайности — удалил всю функциональность в которой он проявлялся, а баг выжил ... Мистика. Ушел спать с тревожным сердцем Оказалось, правил резервную копию исходников, а компилировал, понятное дело, рабочую
дада. А я както приезжал в наш головной офис в Израиле, там по ходу дела пришлось помочь местным ковыряться в ихнем коде который зависал, пожирая весь CPU. В windbg нашел из-за чего зависает — товарищи звали WaitNamedPipe, дожидались пайпа и потом открывали его CreateFile'ом. Баг был изза того, что в WaitNamedPipe передавалось одно имя пайпа (которое было доступен), а в CreateFile — другое (которого не было). Пришел я к ним с этим делом — они открывают код — а там все круто. Одно и то же имя.. Мистика.. Оказалось — у них этот код, вернее даже весь .cpp, в котором был заимплеменчен pipe клиент, под таким же именем был скопипрован в другой фолдер проекта, где и был чутка подправлен — поменяли имя имя в CreateFile, а в WaitNamedPipe нет. А "умная" студия когда тыкаешь в название класса открывала первый файл, и по имени файла отображаемому в windbg его не отличишь, ибо имена файлов то одинаковые.. Копипастеры, блин...
Как много веселых ребят, и все делают велосипед...
У меня тоже такое бывает. Заметил, что начинаю вносить такие баги примерно после трёх часов интенсивного кодинга, уже от усталости. И вот, отработав сегодня три часа думаю — а стоит ли сегодня продолжать? Голова квадратная, нафига кодить, если я параллельно с полезной работой неосознанно сам себе буду капканы в коде расставлять?
Думаю, это должен быть один из вопросов во время интервью: "через сколько часов работы вы вместо кода начинаете писать говнокод?"
Здравствуйте, Kubyshev Andrey, Вы писали:
KA>ВСЮ Неделю ловил баг
KA>Кусок кода был помечен как
KA>#ifdef WIN64 KA>... KA>#endif
KA>вместо
KA>#ifdef _WIN64 KA>... KA>#endif
KA>причем кто-то (я подозреваю что я) опредеделил в дебажной версии WIN64, а в релизе нет. KA>Я ВСЁЁЁЁ ПЕРЕРЫЛ. Нашел много других мелких багов ...
Здравствуйте, netch80, Вы писали:
KA>>ВСЮ Неделю ловил баг N>Типичный "заскок сознания", или в более современной терминологии "глаз замылился". Такие тяжелее всего ищутся.
Вы что-то путаете, тяжелее всего расстрел памяти и дедлоки ловятся, а это фигня, ловится на 1-2-3.
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
ms vc 6 его компилировал молча, но setmode не устанавливалось. каким-то чудом все работало. не знаю каким. а потом внезапно попались такие входные данные, на которых все сломалось. причем ломалось оно очень далеко от этого вызова и чтобы найти баг пришлось пройти очень длинный путь.
после того как убрал пробелы после '#' все заработало. я был страшно зол.
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
сделал либу и отдал в проект.
и это прожило где то с месяц в коде, студия после дебага сыпала сообщениями про лики, а Я как раз на другую либу переключился.
Удивило что никто не обращал на это внимание , пока снова не вернулся в проект и тогда пофиксил.
Здравствуйте, Kubyshev Andrey, Вы писали:
KA>ВСЮ Неделю ловил баг
KA>Кусок кода был помечен как
KA>#ifdef WIN64 KA>... KA>#endif
KA>вместо
KA>#ifdef _WIN64 KA>... KA>#endif
KA>причем кто-то (я подозреваю что я) опредеделил в дебажной версии WIN64, а в релизе нет. KA>Я ВСЁЁЁЁ ПЕРЕРЫЛ. Нашел много других мелких багов ...
И это типа долго?
У меня был случай, когда я два месяца багу не мог выловить.
Настолько баг был редкий и злое##чий
Правда у меня прога была посложней, чем Ваша.
Я написал свою RTOS с вытесняющей многопоточностью.
Причём крайне жёсткого реального времени.
А вообще, #ifdef у многих траблы бывают.
Все, наверное, помнят этот старый прикол с кусочком кода в забытом инклюде, который
оставил уволившийся программист:
Здравствуйте, netch80, Вы писали:
N>Здравствуйте, Kubyshev Andrey, Вы писали:
KA>>ВСЮ Неделю ловил баг
N>Типичный "заскок сознания", или в более современной терминологии "глаз замылился". Такие тяжелее всего ищутся. N>Искренне поздравляю с поимкой.
KA>>причем кто-то (я подозреваю что я) опредеделил в дебажной версии WIN64, а в релизе нет.
N>интересно, зачем определил-то.
N>Кстати, чем peer review полезно, это именно тем, что такие вещи легче находятся именно свежим взглядом.
А вот когда у штатны программисто "глаз замылился" и требуется "свежий взгляд", тогда
становиться "НУЖНА ПОМОЩЬ ЗАЛА"®
Здравствуйте, Vain, Вы писали:
V>Здравствуйте, netch80, Вы писали:
KA>>>ВСЮ Неделю ловил баг N>>Типичный "заскок сознания", или в более современной терминологии "глаз замылился". Такие тяжелее всего ищутся. V>Вы что-то путаете, тяжелее всего расстрел памяти и дедлоки ловятся, а это фигня, ловится на 1-2-3.
Я говорил про общие проблемы, не зависящие от применяемых средств. У меня сейчас >98% работы это Erlang и таких проблем, как Вы описываете, нет в принципе. А то можно ещё какой-нибудь ALTER GOTO из Кобола вспомнить, вот по сравнению с его неумеренным применением и дедлоки — фигня.
Здравствуйте, netch80, Вы писали:
KA>>>>ВСЮ Неделю ловил баг N>>>Типичный "заскок сознания", или в более современной терминологии "глаз замылился". Такие тяжелее всего ищутся. V>>Вы что-то путаете, тяжелее всего расстрел памяти и дедлоки ловятся, а это фигня, ловится на 1-2-3. N>Я говорил про общие проблемы, не зависящие от применяемых средств. У меня сейчас >98% работы это Erlang и таких проблем, как Вы описываете, нет в принципе. А то можно ещё какой-нибудь ALTER GOTO из Кобола вспомнить, вот по сравнению с его неумеренным применением и дедлоки — фигня.
Не нету проблем, а заменил одни проблемы на другие
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]