Який найдивніший баг ви ловили?
Робота тестувальника повна пригод та цікавинок. Ніколи не знаєш звідки вилізе черговий баг і яким він буде.
Розкажіть, який найдивніший або найнесподіваніший баг ви зустрічали під час роботи? Можливо, він змусив вас сміятися або задуматися над тим, як взагалі такий продукт може існувати?
49 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментаріво, ніхто не пригадав класику, але її памятають %)
medium.com/...ensitive-car-79ef656c8da7
Не можна було додати назву айтема з російською буквою Ё бо розробник був дуже патріотичним і бд не обробляла чисто оці специфічні російські літери 🤌
не спрацёвував Save в редакторі
Колись на дорелізному тестуванні паспортної системи в одному районі Києва виявилось неможливим сфотографувати на документ африканця, бо софт казав, що фото занадто темне.
О! Вспомнил ещё 1 недавний баг.
Есть у меня пылесос беспроводной. Ну и естессно у него есть аккумулятор.
Родной честно отпахал лет несколько и начал сдыхать.
Я купил новый (неоригинальный, но большей ёмкости), заменил. Старый, естессно, выкинул. Всё было хорошо, но примерно через год он отказался заряжаться. Лампочка зарядки светится, но ничего не происходит.
Ну что ж, бывает. Купил новый такой же. А он — не заряжается. Сразу. Ну, окей. Значит, этот производитель — говно. Поставил ему 1 балл на амазоне, вернул, заказал у другого.
Приехал другой, а он — тоже не заряжается. Тут я начал чесать репу мол как же так? 1 раз — случайность, 2 — совпадение, 3 — система.
Окей. Перевставил в другую розетку — не помогает. Значит, остался только 1 непротестированный компонент ) Заменил зарядку — и о чудо! Оба аккума (старый с 1 годом работы и новый от другого производителя) отлично заряжаются )))
Притом что ничто не предвещало беды — старая зарядка выглядела 100% обычной: никакого окисления, оплавления — вообще ничего. Просто в какой-то момент, походу, начала выдавать ток, недостаточный для зарядки аккума (ну или просто какое-то другое значение, и контроллер аккума блокировал зарядку). А ошибку зарядки аккум писать не умеет: на аккуме 1 лампочка, работающая в режиме вкл (заряжается), выкл (зарядилось).
Пришлось исправлять плохой отзыв, производитель оказался совсем не виноват ))))
Мораль: проверяйте все компоненты )))
DUT ребутал свой сокет, к которому можно было подключать другой девайс каждые 10 минут.
По рекваирментам он должен был это делать только если падал интернет, но интернет был.
В итоге оказалось, что при буте не поднялся NTP -> не взлетел DoH -> у одного из сервисов не поднялся DNS -> DUT думал, что у него нет интернета и наяривал сокет :D
підлітком в 2000х купував буCD-player (у чьоткого тіпа який його намутив чи віджав у когось)
купив найдешевшу пару батарейок, розпакував їх перед продавцем, вставляю, девайс включається і майже одразу вимикається
купив як глючний за 30грн замість 150+грн(чи щось таке)
дома став розбиратись, зрозумів що йому потрібні якісні батарейки/аккумулятори :)
витекла пам’ять в матлабі на 512 гіг оперативки і повісила наглухо весь сервак
1. TES Oblivion. Было там место с ловушкой, заходишь — вокруг тебя оч быстро поднимаются высокие стены, получается типа камера 2×2 метра и тебя начинают травить газом.
Но.
Оч быстро != моментально :)
С n-й попытки мне удалось запрыгнуть на стену, пока она не успела подняться, после чего она вынесла меня за карту ))) Можно было ходить над всем подземным лабиринтом (кстати, наверх != на поверхность почему-то ))) ) и мочить монстров фаерболами, пока они не могли тебя достать.
2. Cyberpunk 2077. Была интересная точка на радиовышке. Если туда прыгнуть — тебя с огромной скоростью (быстрее, чем на байке ))) ) катапультировало примерно км на 3, после чего ты падал и разбивался. Эдакая гравиловушка в стиле сталкера ))))
Недавно грав в облівіон, дуже цікаву багу відтворив. Грав на найвищій складності, проходив квест в печері, після певного трігеру (а саме: забрати/вкрасти артефакт) мене майже завжди вбивали. В локації все зачиняється крім одного виходу, але я то не помітив одразу. Я придумав що можу в теорії передвинути артефакт до виходу за допомогою фізики гри. Так і вийшло. Я зміг вийти з локації, забравши те що потрібно. І найцікавіше те що всі вороги далі були «заморожені», я міг спокійно їх бити, а вони не реагували. Я не вірив своєму щастю) Тільки пізніше, коли я не зміг пройти локацію далі, я подивився гайд по квесту, і зрозумів що я потрапив зовсім не туди, куди треба.
Саме найдивніше, що я розбирав, це ловити баги, коли у файловій системі закінчились inode-и — так буває, коли на розділі мегатонна дрібних файлів або хтось до тебе проявив креатив при створенні розділу.
Проявляється, як якась чортівня: файли рандомно то зберігаються, то не зберігаються, хоча місце є; якісь операції то завершуються, то падають на пів-дороги; логи пишуться, але в загальному відчуття, ніба сервер десь тебе намахує :)
Не ловив але чув про такий баг: на такій-то моделі відеокарти, в такій-то грі, на такому-то рівні, в такому-то місті не горить факел на стіні.
[з польових досліджень швидко-програмування]
Одного разу електрон апп почала глючити при збереженні даних — записувала приблизно тільки через раз. На брейншторм-консиліумі по вирішенню проблеми хтось сказав «Диск він же з атомів складається, а атоми мають електричний + та -, тому в половині випадків електрони відбиваються від поверхні в процесі запису». В результаті вирішили продублювати збереження і записувати два рази — воркароунд спрацював.
:)
У мікросхеми був фізично відірваний пін землі, але невеликий сліп на головному мікроконтролері вирішував проблему)))
«Sane» обмеження в ядрі лінукса на кількість байт які можна передати по шині i2c за один раз, прийшлось ділити на частини щоб не патчити ядро.
Сусідня команда плюсовиків писала західному клієнту тюремний софт, і довго ловили баг, коли на пересилці з тюрми в тюрму зникали зеки. Фізично зек є, а по системі — нема.
Баг був, можна сказати, архітектурний. Довго ловили.
Плюси ще й дебажаться важко, а там дані зникали з пам’яті.
ну хочаб в системі зникали, а не навпаки, а то б відправили ловити зниклі дані «in the field» :)
Система предупреждения о спущенном колесе в машине (на каждом колесе датчик давления).«3-4 колеса» (тип данных строка).
Ожидаемый результат (количество спущенных колёс): 3 (тип данных число).
Фактический результат:
алгоритм присвоєння ефемерал порту в лінуксі довгий час був «трохи дивний», а саме, якшо діапазон зарезервованих портів дуже широкий ядро з максимальною імовірністю починало перебирати порти з його початку, тобто легасі-апки комунікуючи в патерні, відкрив-вислав-закрив поводували те, що файрвол десь далі трактував як підозріле повторне використання порту і дропав сін, тцп йшов у ретрансміт і таймаут
звуживши діапазон резервації можна було уникнути 98% таких ситуацій, але пояснити в чому справа різним адмінам і вендорським супортам було несамовито важко
У мене було банальне в апці “Migration failed successfully”
Жаль, не найду уже скриншот, остался на прошлой машине...
Тоже XP. Системное окно сообщения (как на скрине). Знак ошибки (крестик в красном круге), заголовок окна «Error», текст сообщения «No error».
Ловив не я, але сталося це на проекті де я працював. Юзали бд AWS Aurora, і якщо вона автоскейлилась під час роботи наших кронів — вона на якийсь час падала. А прикол в тому, що це був реально баг, сапорт AWS його визнав, і його фіксили на їх стороні
ну, типу, яка вірогідність піймати критичний баг в сервісі aws?)
Тут bell curve meme. Спочатку думаєш що твій код ок, це все фреймворки з багами. Потім розумієш що налажав саме ти. А після певної кількості років досвіду зтикаєшся з купою багів в стороніх сервісах й фреймворках, й знову перестаєш виключати можливість що баг не в твойому коді.
у мене якось сервер видавав некоректні дані, після довгого розслідування виявилося, що це баг MySQL. Який вони не поспішають виправляти: bugs.mysql.com/bug.php?id=113154
Метелика який замкнув схему в ENIAC не знаходив, напевно усе по переду.
Колись майже задарма дістав XBox 360 із симптомом — не вмикається. Розібрав а там тарганів тьма. Спакував в пакет щоб по квартирі не розбіглись, на вулиці розпилив туди флакон рейду, усе розібрав,почистив, вимив спиртом, зібрав — працює
Це був найепічніший дебагінг у житті :-)
бабки під під’їздом:
— диви, диви! он наркоман з ... квартири — нюхати пішов!
— серед білого дня вже навіть не бояться!
У ті часи ще ходив із довгим волоссям, рваних джинсах, футболці Nirwana і ще купою дрібної рок атрибутики :-) Так що наркоман 100%
В мене тарган, ще у дитинстві викликав коротке замикання на матплаті)))) То якийсь пень 2й був. Або може це був просто стрибок напруги в мережі і труп таргана поруч це збіг обставин. Ох, ці квартири на борщагівці 90х)))
i.pinimg.com/...89bc550044caec29543e6.jpg
Deadlock на проді, який поклав енвайроменти кастомерів з багатомільйонними контрактами.
Так, змусив задуматись, щоб автоматизувати кейс і мати хоч якусь впевненість, що такого більше не станеться.
Що за технологія ? Усі сучасні засоби розробки та санітайзери ловлять дедлоки на раз, чого не скажеш про raise condition от де справді найскладніші у виявленні дефекти.
Не я, та й не впевнений що це реальна історія, а не байка, але люблю цю байку: web.mit.edu/jemorris/humor/500-miles
ChatGPT TLDR:
UPD: погуглив, наче не байка, а реальна історія: www.ibiblio.org/...rris/500milemail-faq.html
1ms = 300km
обмін round-trip: 1ms = 300km / 2 = 150km
не у вакуумі: 1ms = 150km * ~2/3 = ~100km
тобто 3ms = ~300km = ~200miles
В FAQ автор пише:
Тобто автор стверджує що таке було, але він все дуже сильно спростив щоб було простіше читати й розуміти.
Що стародавній sendmail з якимось таймінгом затаймаутив — чомуб і ні
Числа (3ms 500miles) не сходяться, тому і хумор
Ай ноу
p.s. нетадмін зануда скаже — запустіть mtr нп з Києва до Львова — і подивіться rtt між точкою обміну і наступним хопом, або нп distance/rtt між геовідоміми точками з Європи до Америки
pps. а ще більш занудний юнікс-адмін скаже що все що менше 10ms хоч і заміряється (можливо достатньо точно), але наврядчи можна вважати reliable для роботи софта якщо в цілому брати
Одного разу в 2018 році API курсу валют одного банку тимчасово видало неправильні цифри і хтось на DOU купив 3 вакансії за 2 гривні 16 копійок замість 1673 грн 70 копійок:

Ґуґл якось пропустив цифру та визначив вартість підписки як «229 грн/міс. або 229 грн/рік». Я цим скористався. Рік їм довелося тримати слово, потім отримав лист:
Не те щоб «найдивніший», але достатньо цікавий для того, щоб я для нього категорію придумав — «автоімунний баг».
Якщо коротко: в системі є сутність реквесту на створення постачальника, й власне сутність постачальника, яка створюється, коли реквест заапрувлено. І є функціонал, який в системі відповідає за реакцію на створення дублікатів, й відповідні блокуючі або попереджувальні повідомлення. І цей функціонал після фіксу дотичного прихованого багу почав відпрацьовувати на створення сутності постачальника й показувати на ще не закритому реквесті на цього ж постачальника — що ніби є дублікат.
Це повна аналогія автоімунних реакцій організму, накшталт псоріазу наприклад, коли імунітет примушує клітини шкіри оновлюватись троха швидше ніж треба, проявляючись у вигляді почервоніння, свербежа та лущення шкіри.
По цій аналогії й з’явилась на проекті назва: «автоімунний баг».
Колись я в процесі тестування додав декілька тестових лейблів в систему. Перший з умовою, що кредитний рейтинг користувача 665: «Satan is coming». І другий для кредитного рейтингу 666: «Allah akbar! Satan is here». Чи варто казати, що ці лейбли успішно просочились в продашн?
На щастя, знайшов їх наш продакт овнер, і сталось це 1го чи 2го квітня, але все-одно було невдобно. Ну і з тих пір я свою мемну натуру в адмінку не пускаю)
It’s a good one :)
Цікаво було побачити реакцію продакт овнера в той момент :)
-
Thanks.
-
Дякую за коментар. Ваш сором — це ваш сором. Мені не соромно розказати за власні факапи. І ми з вами на «ти» не переходили. Це банальна неввічливість з вашого боку.
-
Коли навчитесь спілкуватись — з радістю відповім.
-