Системы ИИ становятся всё сложнее, но даже в самых могут скрываться ошибки, которые годами остаются незамеченными. OpenAI обнаружила, что год сбоев в её критической инфраструктуре ChatGPT был вызван не только аппаратной проблемой, но и 18-летним багом в открытом исходном коде, который никто не замечал.
В течение года инженеры OpenAI боролись со сбоями в инфраструктуре данных, особенно в сервисе Rockset, который критически важен для многих плагинов ChatGPT и поиска в диалогах. Сбои были редкими, но постоянными, и их источник оставался загадкой.
Проблемы проявлялись необычно. Функции C++ завершались, но затем передавали управление на неверный адрес, что приводило к остановке программы. Иногда адрес возврата в стеке был NULL, иногда регистр указателя стека (%rsp) сдвигался на 8 байт. Эти признаки не соответствовали типичным сбоям в коде приложений.
После масштабного анализа дамп-файлов (core dump analysis) инженеры выяснили, что причинами были две независимые проблемы. Первая — скрытый аппаратный сбой. Вторая — 18-летний баг в открытом исходном коде, который оставался незамеченным.
Сервисы OpenAI, обеспечивающие работу моделей и агентов, часто пишутся на C++ для максимальной производительности и минимального использования памяти. Однако отсутствие встроенной безопасности памяти в C++ означает, что ошибки могут приводить к трудноуловимым сбоям, таким как запись по некорректным или несуществующим адресам.
Обнаружение такого старого и скрытого бага в критической инфраструктуре показывает, что даже в высокопроизводительных C++ системах могут годами скрываться фундаментальные ошибки. Метод анализа дамп-файлов на популяционном уровне становится ключевым инструментом для отладки редких и сложных сбоев в масштабной инфраструктуре, на которую полагаются современные ИИ-модели.