Инженеры OpenAI устранили необъяснимые сбои C++ в своей инфраструктуре данных Rockset, выявив две различные причины: скрытую аппаратную порчу на хосте Azure и состояние гонки (race condition) в GNU libunwind, существующее уже 18 лет.
- Сбои включали возврат функций по недействительным адресам или с неверно выровненными указателями стека, что противоречило стандартным гипотезам программного отладки.
- Первоначальный анализ исключил ошибки в коде приложения, проблемы компилятора и сбои доставки сигналов ядра из-за отсутствия доказательств.
- Исследователи использовали дампы ядра и красную зону x86_64 для сохранения неактивных кадров стека с целью детального анализа после сбоя.
- Расследование сместилось от поиска одной причины к выявлению двух независимых ошибок после анализа данных о сбоях на уровне популяции, а не изолированных случаев.
Этот подход демонстрирует, как рассмотрение сбоев как эпидемиологической проблемы позволяет инженерам выявлять редкие сложные отказы, которые упускают традиционные методы отладки.