10 декабря с 20:30 по 22:37 по московскому времени почтовый сервис Gmail ушёл в офлайн для некоторых пользователей, прихватив с собой Google Drive и ещё пару сервисов. В США, где в это время был рабочий полдень, отсутствие почты и календаря вызвало панику у офисных работников.
Даунтайм какого-то веб-сервиса — вполне естественное явление. Достаточно подождать часик-другой — и сайт возвращается к работе. Но 10 декабря события приобрели неожиданный поворот. Десятки пользователей на форумах начали говорить, что в какой-то момент у них одновременно стали «крашиться» браузеры Chrome и Chromium, с ошибками вроде такой:
terminate called after throwing an instance of 'std::out_of_range' what(): bitset::set [1] 4934 abort (core dumped) chromium
После перезапуска браузера он через некоторое время опять вылетал с ошибкой.
Интересно, что падение Chrome наблюдалось не у всех, а только у части пользователей, но зато происходило синхронно на разных устройствах, под разными операционными системами: Windows, Linux, Mac OS. Представьте, что в одну секунду у вас мгновенно вылетают с ошибкой браузеры на десктопе, ноутбуке и смартфоне.
Один из пользователей опубликовал полный краш-репорт, из которого можно понять причины странного глюка.
Начало отчёта:
Process: Google Chrome [524] Path: /Applications/Google Chrome.app/Contents/MacOS/Google Chrome Identifier: com.google.Chrome Version: 23.0.1271.95 (1271.95) Code Type: X86 (Native) Parent Process: launchd [259] Date/Time: 2012-12-11 01:55:06.950 +0900 OS Version: Mac OS X 10.7.5 (11G63) Report Version: 9 Crashed Thread: 23 Chrome_SyncThread Exception Type: EXC_CRASH (SIGABRT) Exception Codes: 0x0000000000000000, 0x0000000000000000
Как можно заметить, в отчёте указан тред Chrome_SyncThread
, из-за которого и вылетело приложение.
Проблема Chrome вызвана багом в механизме синхронизации. Это относительно новая функция Chrome, которая позволяет синхронизировать пароли, вкладки и прочую информацию между разными инстансами Chrome на разных устройствах, если они авторизованы под одним пользователем. В условиях отсутствия доступа к сервисам Google баг привёл к аварийному завершению работы.
У пользователей, которые не пользуются синронизацией Chrome (кнопка Sign in), никаких проблем замечено не было.
Соответствующий баг 165171 уже зарегистрирован в системе баг-репортов. Наверняка, проблему исправят в следующих версиях Chrome и Chromium.