Який найдивніший баг ви ловили?

💡 Усі статті, обговорення, новини про тестування — в одному місці. Приєднуйтесь до QA спільноти!

Робота тестувальника повна пригод та цікавинок. Ніколи не знаєш звідки вилізе черговий баг і яким він буде.

Розкажіть, який найдивніший або найнесподіваніший баг ви зустрічали під час роботи? Можливо, він змусив вас сміятися або задуматися над тим, як взагалі такий продукт може існувати?

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

о, ніхто не пригадав класику, але її памятають %)
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 (тип данных число).
Фактический результат: «3-4 колеса» (тип данных строка).

алгоритм присвоєння ефемерал порту в лінуксі довгий час був «трохи дивний», а саме, якшо діапазон зарезервованих портів дуже широкий ядро з максимальною імовірністю починало перебирати порти з його початку, тобто легасі-апки комунікуючи в патерні, відкрив-вислав-закрив поводували те, що файрвол десь далі трактував як підозріле повторне використання порту і дропав сін, тцп йшов у ретрансміт і таймаут

звуживши діапазон резервації можна було уникнути 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х)))

Deadlock на проді, який поклав енвайроменти кастомерів з багатомільйонними контрактами.

Так, змусив задуматись, щоб автоматизувати кейс і мати хоч якусь впевненість, що такого більше не станеться.

Що за технологія ? Усі сучасні засоби розробки та санітайзери ловлять дедлоки на раз, чого не скажеш про raise condition от де справді найскладніші у виявленні дефекти.

Не я, та й не впевнений що це реальна історія, а не байка, але люблю цю байку: web.mit.edu/jemorris/humor/500-miles

ChatGPT TLDR:

У статистичному факультеті університету не вдавалося надсилати електронні листи на відстань понад ~500 миль.
— Причина звучала абсурдно, але підтверджувалась на практиці.
— Проблема виникла після того, як консультант оновив ОС SunOS, через що замість сучасного Sendmail 8 система почала використовувати стару версію Sendmail 5.
— Файл конфігурації залишився від Sendmail 8, але Sendmail 5 не розумів нові опції й ігнорував їх.
— Однією з таких опцій був таймаут на підключення до SMTP-сервера, який за замовчуванням став нульовим.
— Через це сервер переривав спробу підключення через ~3 мілісекунди.
— Це відповідає близько 500 милям на швидкості світла — саме на таку відстань встигав дійти сигнал і повернутись у цей час.
— Сервери поблизу відповідали вчасно, віддалені — ні. Тому листування працювало лише в межах ~500 миль

UPD: погуглив, наче не байка, а реальна історія: www.ibiblio.org/...​rris/500milemail-faq.html

/humor/ 3ms 500miles

наче не байка, а реальна історія

1ms = 300km
обмін round-trip: 1ms = 300km / 2 = 150km
не у вакуумі: 1ms = 150km * ~2/3 = ~100km

тобто 3ms = ~300km = ~200miles

В FAQ автор пише:

Q: Well, to start with, it can’t be three milliseconds, because that would only be for the outgoing packet to arrive at its destination. You have to get a response, too, before the timeout will be aborted. Shouldn’t it be six milliseconds?
A: Of course. This is one of the details I skipped in the story. It seemed irrelevant, and boring, so I left it out.
Q: The story is fun, but the technical details at the end just don’t add up.
A: I know. See the answer to the previous question. First and foremost, I was writing a humorous story based on an actual occurence, not a case study, so I wrote only what was required to get the point across. I find I suddenly have great respect for writers who write works based on true stories, as I now know how hard it is to find the balance between verisimilitude and storytelling.

Тобто автор стверджує що таке було, але він все дуже сильно спростив щоб було простіше читати й розуміти.

таке було

Що стародавній sendmail з якимось таймінгом затаймаутив — чомуб і ні

Q: The story is fun, but the technical details at the end just don’t add up

Числа (3ms 500miles) не сходяться, тому і хумор

A: I know

Ай ноу

p.s. нетадмін зануда скаже — запустіть mtr нп з Києва до Львова — і подивіться rtt між точкою обміну і наступним хопом, або нп distance/rtt між геовідоміми точками з Європи до Америки

pps. а ще більш занудний юнікс-адмін скаже що все що менше 10ms хоч і заміряється (можливо достатньо точно), але наврядчи можна вважати reliable для роботи софта якщо в цілому брати

Одного разу в 2018 році API курсу валют одного банку тимчасово видало неправильні цифри і хтось на DOU купив 3 вакансії за 2 гривні 16 копійок замість 1673 грн 70 копійок:

Ґуґл якось пропустив цифру та визначив вартість підписки як «229 грн/міс. або 229 грн/рік». Я цим скористався. Рік їм довелося тримати слово, потім отримав лист:

Google LLC is increasing the price of your subscription ‘Google One (2 TB)’ from UAH 229.00/year to UAH 2,299.00/year starting on 29 June 2024.

Не те щоб «найдивніший», але достатньо цікавий для того, щоб я для нього категорію придумав — «автоімунний баг».

Якщо коротко: в системі є сутність реквесту на створення постачальника, й власне сутність постачальника, яка створюється, коли реквест заапрувлено. І є функціонал, який в системі відповідає за реакцію на створення дублікатів, й відповідні блокуючі або попереджувальні повідомлення. І цей функціонал після фіксу дотичного прихованого багу почав відпрацьовувати на створення сутності постачальника й показувати на ще не закритому реквесті на цього ж постачальника — що ніби є дублікат.
Це повна аналогія автоімунних реакцій організму, накшталт псоріазу наприклад, коли імунітет примушує клітини шкіри оновлюватись троха швидше ніж треба, проявляючись у вигляді почервоніння, свербежа та лущення шкіри.

По цій аналогії й з’явилась на проекті назва: «автоімунний баг».

Колись я в процесі тестування додав декілька тестових лейблів в систему. Перший з умовою, що кредитний рейтинг користувача 665: «Satan is coming». І другий для кредитного рейтингу 666: «Allah akbar! Satan is here». Чи варто казати, що ці лейбли успішно просочились в продашн?

На щастя, знайшов їх наш продакт овнер, і сталось це 1го чи 2го квітня, але все-одно було невдобно. Ну і з тих пір я свою мемну натуру в адмінку не пускаю)

Цікаво було побачити реакцію продакт овнера в той момент :)

Дякую за коментар. Ваш сором — це ваш сором. Мені не соромно розказати за власні факапи. І ми з вами на «ти» не переходили. Це банальна неввічливість з вашого боку.

Коли навчитесь спілкуватись — з радістю відповім.

Підписатись на коментарі