Как Tailscale полгода искали баг в SQLite
Х@habr_comмедиа / агрегатор
1 месИстория о том, как инженеры Tailscale полгода расследовали повреждение баз данных SQLite, обнаружив дефект, существовавший 16 лет.
Обнаружение скрытой ошибки в одной из самых популярных библиотек в мире показывает, что даже проверенный годами софт может содержать критические уязвимости.
- SQLite используется практически во всех современных приложениях и операционных системах.
- Сложные баги в инфраструктурном ПО могут оставаться незамеченными десятилетиями.
- История подчеркивает важность глубокой диагностики в продакшене при невозможности воспроизвести проблему локально.
Как Tailscale полгода охотилась за багом в SQLite
За шесть месяцев у Tailscale 19 раз повреждались SQLite-базы. Иногда между инцидентами проходило несколько часов. Однажды наступили шесть спокойных недель, а потом проблема вернулась как совершенно нежелательный рождественский подарок.
Закономерности не было: ни конкретного шарда, ни нагрузки, ни времени суток. Баг не удавалось воспроизвести, поэтому диагностику пришлось тащить прямо в продакшен, а к расследованию подключились разработчики самого SQLite.
В конце этой цепочки обнаружился дефект, который, по оценке разработчиков, мог скрываться в SQLite как минимум 16 лет.

Кратко (AI)
Инженеры Tailscale столкнулись с регулярным повреждением баз данных SQLite, которое не удавалось воспроизвести в тестовой среде. После полугода расследования, проведенного совместно с разработчиками SQLite, был обнаружен критический дефект, который присутствовал в коде СУБД на протяжении 16 лет.
Обсуждение
2полгода на поиск бага, который вылезал раз в несколько часов то в шесть недель тишины — жестко. и что в итоге нашли 16-летний баг в sqlite, куда уже, кажется, все заглянули по десять раз. напоминание, что даже в самом отполированном коде может лежать что-то настолько старое и настолько неуловимое.
полгода на баг, который в SQLite 16 лет сидел и его до этого сто раз ковыряли - вот так оно и бывает, зрелый код это не гарантия что race condition где-то не спрятался, отполированность и надежность под нагрузкой это разные вещи