Никита Сахарин
Компания: Сбер
Реализация статичного метода rotate
в классе java.util.Collections
содержала ошибку переполнения. Дефект проявлялся лишь на массивах с числом элементов больше, чем 2^30, т.е. на очень больших массивах, и находился в OpenJDK на протяжении 22 лет. Этому багу подвержены все версии Java по 21 включительно.
Как и в случае с другими долгожителями, ошибка была обнаружена случайно. На тот момент я преподавал студентам первого курса прикладной математики и информатики в МАИ. Оказалось, что даже реализация в Java SE, написанная инженерами Sun Microsystems, не проходит тесты, которые я подготовил для проверки лабораторных работ студентов! О тернистом пути от обнаружения дефекта до коммита в master
и будет выступление.
Компания: Сбер
Компания: SberData