Несколько месяцев инженеры OpenAI расследовали загадочные краши в Rockset, C++-сервисе для поиска по данным в инфраструктуре ChatGPT. Функции аварийно возвращались по NULL-адресу или со смещённым указателем стека, что не объяснялось ни одной гипотезой.
Чистый разбор всех core-дампов за год показал, что это два разных бага. Первый: одна машина в Azure с битым CPU, который неверно считал. Второй: гонка в GNU libunwind, присутствующая с первой x86_64-версии 18 лет назад.
Окно гонки шириной в одну инструкцию, около 100 пикосекунд: если сигнал SIGUSR2 приходит сразу после смены %rsp, ядро затирает структуру ucontext_t, и указатель команд обнуляется. OpenAI переключилась на unwinder из libgcc и отправила фикс в апстрим.

