null

Зависший процесс mdb при сборке explorer на Solaris 10

В первую очередь эта статья существует по причине того, что информация по данной проблеме не была найдена в гуглах, хоть она, как оказалось, является известной багой.

Что произошло?

Раз в неделю ранним утром с некоторых машинок под управлением Solaris 10 к нам приходят архивы с собранным explorer'ом. И вот однажды мы замечаем, что количество полученных архивов не совпадает с количеством машин. Что случилось? Машина умерла? Пропала сеть? В общем, пошли разбираться. 

Попав на проблемную систему мы обнаружили, что всё вроде бы в норме, но вывод ps заставил усомниться в нормальности текущей ситуации. Там был обнаружен усердно трудящийся mdb, который на момент диагностики съел какое-то невообразимое количество ядерного процессорного времени. Увидев подобное неэтичное поведение со стороны улититки, было принято решение о её казне методом SIGKILL, после чего, словно взмахом вошебной палочки, недостающий explorer прилетел нам на почту.

Начали диагностику. В пришедшем архиве был достаточно быстро обнаружен файл threadlist.out необычно большого объёма, а именно 8 гигабайт, а цифра в выводе wc -l была такой большой, что её было лень читать (350261449). Оказалось, что доблестный mdb вывел больше 350 миллионов stack pointer'ов для какого-то java процесса. Ощущение полной беспомощности в диагностике данного кейса пришло быстро, ибо в интернетах не оказалось ровным счётом никакой информации по данной проблеме, и мы решили эскалировать этот ужос в Oracle.

 Так как это чинить?

В общем-то, очень просто. Обновить explorer. Данная ошибка оказалось известной (Oracle'у) и была исправлена в Solaris explorer версии 8.08. Ставить, соответственно, можно всё что выше. Для обновления понадобится Oracle Service Tools Bundle.

Вперед