Никита Сахарин — Переполнение в Collections.rotate

Описание к видео Никита Сахарин — Переполнение в Collections.rotate

Ближайшая конференция — JPoint 2025, 3–4 апреля (Москва + трансляция).
Подробности и билеты: https://jrg.su/T2zfbS
— —
Скачать материалы к докладу с сайта JPoint — https://jrg.su/y732bS

Реализация статичного метода rotate в классе java.util.Collections содержала ошибку переполнения. Дефект проявлялся лишь на массивах с числом элементов больше, чем 2^30, т.е. на очень больших массивах, и находился в OpenJDK на протяжении 22 лет. Этому багу подвержены все версии Java по 21 включительно.

Как и в случае с другими долгожителями, ошибка была обнаружена случайно. На тот момент спикер преподавал студентам первого курса прикладной математики и информатики в МАИ. Оказалось, что даже реализация в Java SE, написанная инженерами Sun Microsystems, не проходит тесты, которые он подготовил для проверки лабораторных работ студентов! Это выступление — о тернистом пути от обнаружения дефекта до коммита в master.

Комментарии

Информация по комментариям в разработке