Як бага в системі приводить до великих рахунків за світло
#testing #bugs #funny
Поки в нас перевантаження електромереж та постійні відключення світла - ось Вам історія про те, як через багу у системі, у школі в Массачусетсі не могли вимкнути світло протягом РОКУ!
#testing #bugs #funny
Поки в нас перевантаження електромереж та постійні відключення світла - ось Вам історія про те, як через багу у системі, у школі в Массачусетсі не могли вимкнути світло протягом РОКУ!
NBC News
The lights have been on at a Massachusetts school for over a year because no one can turn them off
Blame it on the pandemic and "supply chain problems," says the school district's assistant superintendent of finance.
👍8😁2
The Canva outage: another tale of saturation and resilience
#bugs
Починаємо робочий тиждень зі свіжої історії від Canva. Історії, де до падіння продакшена призвела не бага в продукті (функціонально все працювало, як треба), а проблема в складній інфраструктурі.
#bugs
Починаємо робочий тиждень зі свіжої історії від Canva. Історії, де до падіння продакшена призвела не бага в продукті (функціонально все працювало, як треба), а проблема в складній інфраструктурі.
Surfing Complexity
The Canva outage: another tale of saturation and resilience
Today’s public incident writeup comes courtesy of Brendan Humphries, the CTO of Canva. Like so many other incidents that came before, this is another tale of saturation, where the failure mod…
👍9
How a 20 year old bug in GTA San Andreas surfaced in Windows 11 24H2
#bugs #games
Починаємо робочий тиждень з цікавої статті про баги.
Цього разу - розповідь про те, як свіжий апдейт для Windows 11 "видалив" з GTA San Andreas одну з моделей літаків (Skimmer).
В ході розслідування виявилось, шо розробники з Rockstar Games додали обʼєкт із назвою Skimmer ще в часи GTA Vice City. Але тоді то був ... човен. В San Andreas він став літаком, але йому не додали деяких обовʼязкових параметрів. Воно якось працювало вже 20 років, але тут Microsoft вирішили трохи пофіксити роботу стеку в Windows 11 24H2. Як результат - баг з літаком опинився на поверхні.
Я свого часу багато грав в GTA San Andreas. А ви? Яка ваша улюблена гра з серії?
#bugs #games
Починаємо робочий тиждень з цікавої статті про баги.
Цього разу - розповідь про те, як свіжий апдейт для Windows 11 "видалив" з GTA San Andreas одну з моделей літаків (Skimmer).
В ході розслідування виявилось, шо розробники з Rockstar Games додали обʼєкт із назвою Skimmer ще в часи GTA Vice City. Але тоді то був ... човен. В San Andreas він став літаком, але йому не додали деяких обовʼязкових параметрів. Воно якось працювало вже 20 років, але тут Microsoft вирішили трохи пофіксити роботу стеку в Windows 11 24H2. Як результат - баг з літаком опинився на поверхні.
Я свого часу багато грав в GTA San Andreas. А ви? Яка ваша улюблена гра з серії?
Silent’s Blog
How a 20 year old bug in GTA San Andreas surfaced in Windows 11 24H2
After over two decades, players are now forbidden from flying a seaplane, all thanks to undefined code behavior.
🤯9👍7❤4😁1👌1
Vibe coding ... ти не пройдеш!
#python #bugs
🗺 Ситуація
Ви тест інженер та працюєте в команді з розробниками.
До команди приєднується новий девелопер. Він ... дуже полюбляє vibe coding, але не любить vibe debugging.
Через деякий час, ви бачите від нього PR на задачу обробки дорослих юзерів та фільтрації тих, у кого є валідна електрона адреса.
❔Питання: чи все ок з цим кодом? Відповіді пишемо в коментарях.
#python #bugs
🗺 Ситуація
Ви тест інженер та працюєте в команді з розробниками.
До команди приєднується новий девелопер. Він ... дуже полюбляє vibe coding, але не любить vibe debugging.
Через деякий час, ви бачите від нього PR на задачу обробки дорослих юзерів та фільтрації тих, у кого є валідна електрона адреса.
def process_user_data(users, min_age=18):
results = []
for user in users:
name = user['name']
age = user['age']
email = user['email']
if age >= min_age:
if '@' in email:
user['status'] = 'processed'
results.append(user)
average_age = sum(user['age'] for user in results) / len(results)
print(f"Average age of processed users: {average_age}")
return results
❔Питання: чи все ок з цим кодом? Відповіді пишемо в коментарях.
😁10🥴8❤1
Testability and Cost of Change
#testability #bugs
Знайшов доволі стару, але цікаву статтю про те, як в різний час в різних компаніях й процесах комунікують ціну виправлення помилок.
Все починається аж в 1976 році в журналі IEEE, коли Barry Boehm вперше задав питання про важливість фіксу помилок. Свою думку він згодом закріпив у книзі "Software Engineering Economics" (1981).
Цікаве питання: якщо з часом виправляти помилки стає дорожче, то й відповідно робити зміни у функціоналі стає так само складно й дорого? Як думаєте?
#testability #bugs
Знайшов доволі стару, але цікаву статтю про те, як в різний час в різних компаніях й процесах комунікують ціну виправлення помилок.
Все починається аж в 1976 році в журналі IEEE, коли Barry Boehm вперше задав питання про важливість фіксу помилок. Свою думку він згодом закріпив у книзі "Software Engineering Economics" (1981).
Цікаве питання: якщо з часом виправляти помилки стає дорожче, то й відповідно робити зміни у функціоналі стає так само складно й дорого? Як думаєте?
👍13❤1🤔1
🪲 Чому впав Cloudflare?
#bugs #sql #rust
Минулого тижня пів інтернету лежало через те, що сервіс Cloudflare впав та був недоступний якийсь час.
Але чому це сталося? Чи винні в цьому тестувальники? Чи справа в … коді на Rust?
Відповідь не така проста, як здається.
🎓 Як обробляються запити в Cloudflare
Усі запити на Cloudflare проходять через основний проксі сервер. На цьому сервері є багато модулів, що виконують перевірки безпеки для захисту від DDoS атак. Зокрема, такий модуль як Bot Management.
Bot Management - це модель машинного навчання для оцінки того, чи даний запит прийшов від бота чи від реального користувача. Модель приймає на вхід ряд параметрів (features) на основі яких будується статистика та оцінки. Так як боти змінюються дуже швидко - то й даний набір параметрів оновлюється раз у пʼять хвилин.
Чисто технічно, набір параметрів - це файл із переліком фічей, який розповсюджується по всім серверам Cloudflare.
🏫 В чому виникла помилка?
За замовчуванням, фічі отримують розподіленим запитом у базу даних “default” у кластері ClickHouse. У користувача був доступ тільки до цієї бази.
Але для покращень безпеки, розробники зробили зміну, що дає можливість працювати ще й з системними таблицями.
Зміну в налаштуваннях зробили, але … не перевірили сам SQL запит.
А цей запит не мав … фільтру по базі даних. Як результат, цей запит повертав фічі як з таблиці “default”, так і з системної таблиці.
То ж файл з фічами для Bot Management мав купу зайвих дублікатів фічей.
🕶 Ну то й що?
Виявляється, що для обробки фічей попередньо резервується оперативна памʼять. Зазвичай, у файлі було десь 60 фічей при максимумі в 200.
Але коли сталася помилка - у файлі фічей було більше ніж 200!
То ж серверу не вистачало памʼяті, щоб обробити ці фічі. Окей, не вистачило памʼяті, це погано - але чому так довго шукали проблему?
А код на Rust, який обробляє ці фічі … не обробляв таку помилку - а просто кидав базовий Error за допомогою unwrap();
То ж код почав видавати дуже загальну помилку.
Плюс файл із фічами швидко розлетівся по серверам - й вони також збоїли по тій же самій причині.
💡 Що можна було б зробити?
👉Більш ретельно обробляти помилки. Rust як мова програмування в цьому випадку не винен.
👉Тестувати запити на тестових серверах (включно з лімітами по памʼяті). Можна було б досліджувати як система обробляє дані великих розмірів.
❗️Більш докладно про збій можна почитати в офіційному блозі компанії.
#bugs #sql #rust
Минулого тижня пів інтернету лежало через те, що сервіс Cloudflare впав та був недоступний якийсь час.
Але чому це сталося? Чи винні в цьому тестувальники? Чи справа в … коді на Rust?
Відповідь не така проста, як здається.
🎓 Як обробляються запити в Cloudflare
Усі запити на Cloudflare проходять через основний проксі сервер. На цьому сервері є багато модулів, що виконують перевірки безпеки для захисту від DDoS атак. Зокрема, такий модуль як Bot Management.
Bot Management - це модель машинного навчання для оцінки того, чи даний запит прийшов від бота чи від реального користувача. Модель приймає на вхід ряд параметрів (features) на основі яких будується статистика та оцінки. Так як боти змінюються дуже швидко - то й даний набір параметрів оновлюється раз у пʼять хвилин.
Чисто технічно, набір параметрів - це файл із переліком фічей, який розповсюджується по всім серверам Cloudflare.
🏫 В чому виникла помилка?
За замовчуванням, фічі отримують розподіленим запитом у базу даних “default” у кластері ClickHouse. У користувача був доступ тільки до цієї бази.
Але для покращень безпеки, розробники зробили зміну, що дає можливість працювати ще й з системними таблицями.
Зміну в налаштуваннях зробили, але … не перевірили сам SQL запит.
SELECT
name,
type
FROM system.columns
WHERE
table = 'http_requests_features'
order by name;
А цей запит не мав … фільтру по базі даних. Як результат, цей запит повертав фічі як з таблиці “default”, так і з системної таблиці.
То ж файл з фічами для Bot Management мав купу зайвих дублікатів фічей.
🕶 Ну то й що?
Виявляється, що для обробки фічей попередньо резервується оперативна памʼять. Зазвичай, у файлі було десь 60 фічей при максимумі в 200.
Але коли сталася помилка - у файлі фічей було більше ніж 200!
То ж серверу не вистачало памʼяті, щоб обробити ці фічі. Окей, не вистачило памʼяті, це погано - але чому так довго шукали проблему?
А код на Rust, який обробляє ці фічі … не обробляв таку помилку - а просто кидав базовий Error за допомогою unwrap();
pub fn fetch_features(&mut self, input: &dyn BotsInput, features: &mut Features) -> Result<(), (ErrorFlags, i32)> {
features.checksum &= 0xFFF_FFF_000_000;
features.checksum |= u64::from(self.config.checksum);
let (feature_values, _) = features
.append_with_names(&self.config.feature_names)
.unwrap();
//
}
То ж код почав видавати дуже загальну помилку.
Плюс файл із фічами швидко розлетівся по серверам - й вони також збоїли по тій же самій причині.
💡 Що можна було б зробити?
👉Більш ретельно обробляти помилки. Rust як мова програмування в цьому випадку не винен.
👉Тестувати запити на тестових серверах (включно з лімітами по памʼяті). Можна було б досліджувати як система обробляє дані великих розмірів.
❗️Більш докладно про збій можна почитати в офіційному блозі компанії.
The Cloudflare Blog
Cloudflare outage on November 18, 2025
Cloudflare suffered a service outage on November 18, 2025. The outage was triggered by a bug in generation logic for a Bot Management feature file causing many Cloudflare services to be affected.
🔥30👍5❤3