Facebook выпустил версию 13.1 своего клиента для iOS сегодня с довольно неинтересным журналом изменений, в котором отмечалось, что приложение получило «исправления ошибок» и ничего более. Однако, в инженерном блоге Facebook компания подробно описала, что именно было исправлено, и оказалось, что обновление содержит значительное исправление, которое устранит более 50% зарегистрированных сбоев.
Согласно сообщению в блоге, проблема возникла из-за ошибки повреждения файла, которая появилась в системе Core Data в iOS:
Наша политика хранения файловых дескрипторов выглядела подозрительно. Хотя SPDY использовал рекомендуемую обертку CFSocket для нашей базы данных, SSL-слой этого не делал. SSL-слой вместо этого работал с необработанным файловым дескриптором и, как следствие, управление временем жизни не синхронизировалось автоматически. Сокет SPDY закрывался до SSL, создавая гоночное окно, в котором записи попадали в файл, которому «повезло» получить тот же файловый дескриптор, что и недавно закрытый сокет.
Если вас интересуют технические детали того, как команда разработчиков отследила ошибку, полный разбор вы можете найти в инженерном блоге Facebook. Как отмечалось выше, Facebook утверждает, что это обновление устранит более половины сбоев, которые регистрировались в приложении.
Обновленное приложение Facebook можно скачать бесплатно в App Store для iOS.