🌍 Вітаю! 🇧🇾
TL;DR
- Гейзенбаг — баг, исчезающий при отладке
- Не воспроизводится локально, живёт только на проде
- Причины: race conditions, тайминги, побочные эффекты логирования
- Другие виды багов: Bohrbug, Mandelbug, Schroedinbug
- Методы борьбы: tracing, метрики, сравнение конфигураций
🌍 Вітаю! 🇧🇾
Недавно из бэклога взял задачу на исправление бага 🪲. Читая заголовок, в скобочках, я увидел слово inconsistent, внутренне я сразу понял, что ничего хорошего в этом нет, так как есть опыт надевания перчаток по локоть и погружения в интересную субстанцию 💩.
И все бы ничего, но я начал читать описание проблемы и понял, да оно стреляет только на проде, от этого улыбка стала ещешире не стала.
Я вертел и крутил код, смотрел группы, пермишены, состояния, колотил ногами базу, сверял метрики и логи, но ничего не направляло в нужном направлении 🤷♀️
Спойлер: Причину я пока так и не нашёл. В планах обложить всё логами, сесть в кусты и ждать. Я почти уверен, что там что-то с инфрой: что-то упало, утомилось, оборвалось… или на AWS заменили ещё одного разработчика на агента (возможно даже двух).
И вот тут товарищ мне говорит 🙌:
— Так у тебя же чистейший гейзенбаг.
Я уверенно кивнул, сделал вид, что шарю, и пошёл гуглить ⛏.
Не хотите быть как я =) тогда читайте и будьте более подкованными в IT-сленге🤘.
❓ Что такое гейзенбаг
Это баг, который:
🟠исчезает, когда ты пытаешься его отладить,
🟠меняет поведение при добавлении логов,
🟠не воспроизводится локально,
🟠живёт только на проде,
🟠и ведёт себя как живое существо =).
Само название это отсылка к принципу неопределённости Гейзенберга из квантовой физики:
В нашем случае:
➡️ добавил лог → баг исчез,
➡️ включил дебаг → всё работает,
➡️ убрал лог → снова падает.
Понятие о Heisenbug появилось в конце 80-х — начале 90-х и активно использовалось в инженерной среде IBM и Unix-сообществе.
Термин официально закреплен в книге 📘 The New Hacker’s Dictionary
🔥 Причины возникновения
🟠race conditions,
🟠проблемы с таймингами,
🟠неинициализированная память,
🟠 побочные эффекты логирования,
🟠разные конфигурации prod vs local,
🟠GC, JIT, кеши, lazy loading,
🐛 А какие ещё бывают баги?
оказывается IT-сленг вообще богат на багопарк:
✔️ Bohrbug (Борбаг)
Стабильно воспроизводится и стабильно что-то ломает а еще стабильно чинится.
✔️ Mandelbug (Мандельбаг)
Сложный, хаотичный, нелинейный баг, где причина и следствие не очевидны. Часто связан с архитектурой.
✔️ Schroedinbug (Шрёдинбаг)
Баг, который вроде бы есть, а вроде бы нет, пока не посмотришь код не узнаешь.
🧯 Что делать с гейзенбагами? - Терпеть
🟠логировать аккуратно и выборочно,
🟠использовать tracing,
🟠писать метрики,
🟠сравнивать prod/stage,
🟠фиксировать версии,
🟠и не верить, что “раз не воспроизводится — значит нет”.
✏️ Мысли
✍️ Плавающие баги есть в любой программе, просто некоторые из них вы еще ни разу не встречали. А еще с приходом AI в нашу жизни их будет только больше, кстати про один такой недавний кейс я расскажу в следующем посте, подписываееемся и следим!
✍️ Пока ресерчил тему, увидел что для тестировщиков постоянно проводится конференция с названием
P.S. Если у вас был гейзенбаг значит вы уже взрослый разработчик. 🤣
💬 Делитесь мнением в комментариях👇 Если пост зашёл — не забудьте поставить лайк 👍
#BUG
Недавно из бэклога взял задачу на исправление бага 🪲. Читая заголовок, в скобочках, я увидел слово inconsistent, внутренне я сразу понял, что ничего хорошего в этом нет, так как есть опыт надевания перчаток по локоть и погружения в интересную субстанцию 💩.
И все бы ничего, но я начал читать описание проблемы и понял, да оно стреляет только на проде, от этого улыбка стала еще
Я вертел и крутил код, смотрел группы, пермишены, состояния, колотил ногами базу, сверял метрики и логи, но ничего не направляло в нужном направлении 🤷♀️
Спойлер: Причину я пока так и не нашёл. В планах обложить всё логами, сесть в кусты и ждать. Я почти уверен, что там что-то с инфрой: что-то упало, утомилось, оборвалось… или на AWS заменили ещё одного разработчика на агента (возможно даже двух).
И вот тут товарищ мне говорит 🙌:
— Так у тебя же чистейший гейзенбаг.
Я уверенно кивнул, сделал вид, что шарю, и пошёл гуглить ⛏.
Не хотите быть как я =) тогда читайте и будьте более подкованными в IT-сленге🤘.
❓ Что такое гейзенбаг
Это баг, который:
🟠исчезает, когда ты пытаешься его отладить,
🟠меняет поведение при добавлении логов,
🟠не воспроизводится локально,
🟠живёт только на проде,
🟠и ведёт себя как живое существо =).
Само название это отсылка к принципу неопределённости Гейзенберга из квантовой физики:
само наблюдение за системой меняет её поведение.
В нашем случае:
➡️ добавил лог → баг исчез,
➡️ включил дебаг → всё работает,
➡️ убрал лог → снова падает.
Понятие о Heisenbug появилось в конце 80-х — начале 90-х и активно использовалось в инженерной среде IBM и Unix-сообществе.
Термин официально закреплен в книге 📘 The New Hacker’s Dictionary
🔥 Причины возникновения
🟠race conditions,
🟠проблемы с таймингами,
🟠неинициализированная память,
🟠 побочные эффекты логирования,
🟠разные конфигурации prod vs local,
🟠GC, JIT, кеши, lazy loading,
🐛 А какие ещё бывают баги?
оказывается IT-сленг вообще богат на багопарк:
✔️ Bohrbug (Борбаг)
Стабильно воспроизводится и стабильно что-то ломает а еще стабильно чинится.
✔️ Mandelbug (Мандельбаг)
Сложный, хаотичный, нелинейный баг, где причина и следствие не очевидны. Часто связан с архитектурой.
✔️ Schroedinbug (Шрёдинбаг)
Баг, который вроде бы есть, а вроде бы нет, пока не посмотришь код не узнаешь.
🧯 Что делать с гейзенбагами? - Терпеть
🟠логировать аккуратно и выборочно,
🟠использовать tracing,
🟠писать метрики,
🟠сравнивать prod/stage,
🟠фиксировать версии,
🟠и не верить, что “раз не воспроизводится — значит нет”.
✏️ Мысли
✍️ Плавающие баги есть в любой программе, просто некоторые из них вы еще ни разу не встречали. А еще с приходом AI в нашу жизни их будет только больше, кстати про один такой недавний кейс я расскажу в следующем посте, подписываееемся и следим!
✍️ Пока ресерчил тему, увидел что для тестировщиков постоянно проводится конференция с названием
heisenbug полистал старые доклады, есть очень интересные, кстати организатор тот же что и на holyjs.P.S. Если у вас был гейзенбаг значит вы уже взрослый разработчик. 🤣
💬 Делитесь мнением в комментариях👇 Если пост зашёл — не забудьте поставить лайк 👍
#BUG

Хотите больше таких постов?
Подпишитесь на канал и читайте продолжение в Telegram.