PDA

Просмотр полной версии : Баги



Kolinus
13.09.2004, 17:58
Есть предложение обсудить баги - кто с какими сталктвался (сам делал или видел) и кто какие знает.

Например красивый баг был в MS Visual C++ 6.0 баг заключался в том, что при создании std::map в dll и использовании его в главном приложении или наоборот вся программа падала. Если смотреть в дебаге то нормально передавался только первый элемент коллекции.
Через неделю копаний в инете был найден ответ - просто в MS неправильно зареализовали библиотеку STL все решалось использованием седьмой версии С или STL от сторонних разработчиков (в частности stlport)

Absurd
19.09.2004, 14:49
Был такой, который мне чуть работы не стоил. В описании от M$ было написано, что если определенной функции скормить существующее имя файла, то получаешь интерфейс, в противном случае - NULL. Это при дебаге работало, но в условиях реальной эксплуатации после нескольких десятков ненайденных файлов чего-то недрах Винды накапливалось и приводило к Protection Fault. После этого я приобрел привычку скармливать чужим функциям только заведомо достоверные параметры.
Был и такой баг, который меня просто шокировал. Совершенно прозрачный код, которому я верил на все сто, работал неправильно. После того, как я потратил вечер и нашел-таки этот баг, я испытал чего-то типа расширенного сознания. К сожалению, суть этого бага я забыл =( . Такие вещи надо в тетрадки записывать.

Kolinus
20.09.2004, 18:44
Хоть кто-то понимает что без багов программисты не были бы программистами ;)
И вообще M$ любит че-то криво реализовать при чем не только в прикладных проектах но и на уровне средств разработки.У меня тут недавно истроия была - пишу простенький код - организую список из точек потом по ним график строю - в пошаговом дебаге все на ура. а при старте дебаг версии - эксепшн что из нуля читаю. Пользовался стандартным new, переделал через стл лист - все на ура. Машину перегружал - не помогало. На другой комп перенес с new - все пашет.

chur
10.11.2004, 15:43
Linux 2.4.20-2.48smp
Apache 2.50.0 mod_perl 1.99
Perl 5.8.0

Есть perl-скрипт. На выходе HTML-страница. Строку запроса разбираю сам и складываю в хеш-массив %params, который объявлен в начале скрипта. Обязательный параметр запроса - fileindex, имеет, соответсвенно, целое числовое значение (по нему находим в базе имя файла над которым надо изголяться). Далее в скрипте это значение используется для формирования аттрибута href тега <A>, примерно так:
<A href= .. &fileindex=$params{'fileindex'}& .. >
Вообщем, ничего особенного, все работает как надо.

Так же на странице присутствет одна или несколько форм для редактирования, у которых есть hidden INPUT тег с именем fileindex и соответсвующим значением. И вот тут начинается самое интересное. Эти формы генерятся в подпрограмме (в том же скрипте) и вышеописанный тег вставляется следующей строкой:
$form .= "<INPUT type=hidden name=fileindex value=$params{'fileindex'}>";
Т.е. в подпрограмме используется значение хеша $params{'fileindex'}. Так вот, это значение почему-то другое :shock: .
Например, на странице несколько ссылок <A> со значением fileindex=8 (правильным) и три формы, в которых fileindex равен, допустим, 6 (во всех формах одинаковое). Особенно настораживает то, что это происходит не всегда, я бы сказал иногда, но если это произошло и в броузере нажать кнопку 'back' и снова ту же ссылку по которой шли дальше, результат идентичен. Еще один момент. Неправильные значения fileindex в формах, не совсем случайны. Они принимают значения индексов недавно просмотренных файлов.
Вот такие вот undocumented features. Приходится передавать в подпрограмму нужные значения как аргументы, вроде все работает как надо.

chur
12.11.2004, 14:23
Вообщем, это mod_perl глючит. Причем таким суровым образом. И передача в подпрограммы нужных значений то же не всегда помогает. Наверно, не зря номер версии 1.99.
Перенес скрипт без изменений на обычный CGI - все работает пучком. Правда, заметно дольше, но работает, но дольше :)
Если добьюсь стабильности глюка :), продемонстрирую.

Хыиуду
31.01.2007, 15:10
Делал диплом на фреймах. Создал свой класс фреймов, потом от него унаследовал еще 4 класса, каждый из этих классов положил в палитру компонентов, с палитры ляпнул по одному экземпляру на формочку - хорошо!
Вышел из Дельфи, вошел - хрясь! Property TabOrder у моих фреймов, оказывается, does not exist! Потыкал Ignore, Cancel - проигнорило, понимаешь, ошибку. Лежит моя формочка, голая как коленка, и мелким фиговым листочком в углу сиротливо валяется какой-то лейбл, который я во времена царя Гороха в тестовых целях использовал. Запускаю экзешник - о чудо! Вот они, фреймы мои дорогие и любимые, работают как надо! Пытаюсь из Дельфи поредактировать - ну вот нет у него ТабОрдера, хоть ты тресни! И работать поэтому не хочет.
Решение нашлось в Инете: надо было в dfm-файлах этих фреймов ручками поправить первое слово в модуле: object заменить на inherited. Это программисты Борланда в свое время накосячили

DeeJayC
01.02.2007, 11:32
Kolinus, проблема, кстати, известная. Просто в DLLMain надо было crt_init вызывать. Я с этим тоже надолбался по самое никуда.

Absurd
05.02.2007, 14:48
Вспомнил феерическое сообщение об ошибки "Окно Adobe Photoshop не может быть отображно на этом экране".
Экспериментально выяснено, что оно появляется при количестве шрифтов, зарегистрированном в Windows, превышающем 1000+

Хыиуду
05.02.2007, 18:27
Картиночки

Хыиуду
27.02.2007, 18:00
Сегодня мой коллега с шефом обнаружили. На каком-то Sql-сервере программа подсчитывала время чего-то там и т.д. В какой-то момент времени это время стало примерно таким: 12.25.59.99999999..., после чего скрипт все это дело радостно округлил, и стало у нас время 12.25.60. Программа посмотрела на это и ушла в нирвану.

Absurd
28.02.2007, 16:51
Сегодня мой коллега с шефом обнаружили. На каком-то Sql-сервере программа подсчитывала время чего-то там и т.д. В какой-то момент времени это время стало примерно таким: 12.25.59.99999999..., после чего скрипт все это дело радостно округлил, и стало у нас время 12.25.60. Программа посмотрела на это и ушла в нирвану.
За это в суд надо подавать на авторов ПО: SQL сервер должен выдать время в виде секунд или миллисекунд.

Absurd
04.06.2007, 11:00
Прислали по аське:

<******> к вопросу о вчерашних скриптостраданиях. Только что кодер знакомый прислал, нашёл в коде программы, написанной уволенным коллегой незадолго до ухода:
<******> #define TRUE FALSE //счастливой отладки суки
* ****** такого извращённого юмора ещё не встречал