OpenAI обнаружила 18-летний баг в GNU libunwind, вызывавший десятки падений в день

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







