Доклад

Переполнение в Collections.rotate

  • На русском языке

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

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

Спикеры

Приглашенные эксперты

Расписание