metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2012-02-25 08:31 pm

О странностях jvm

Решил я глянуть, почему валится с исключением жабокложурный сервис при остановке, подключился к нему windbg.
Так вот, у меня оный windbg начал сыпать такими Access Violation на каждое действие внутри jvm, что страшно смотреть, причем это во время работы, и извне оно никак не видно.
Такое ощущение, что там внутри сплошные повреждения памяти и разыменования нулевых указателей, но они все окружены обработкой исключений в любимом жабьем стиле и наружу не выходят.
Как-то это крайне неприятно.

[identity profile] volodymir-k.livejournal.com 2012-02-25 06:40 pm (UTC)(link)
Какие-то гаврики лет 10 назад писали багу, что мол под линуксом отлаживать трудно, постоянно валится с ошибками.
Багу закрыли, потому что именно так инженеры сделали что-то важное, типа исключения, и это ВПОЛНЕ ЗАКОННО. Работает, по перформансу отлично -- какие проблемы? Юзеру надо не отлаживать жвм кривыми дебаггерами, а чтобы работало. Оно работает.

Конкретно у вас могу посоветовать -- попробуйте на другой машине, на другой ОС, на другой JVM. Скорее всего у вас анальный ад с версиями msvcrt678901.dll в разных местах. Ещё вариант -- вы используете самописный jni и конечно не закрываете всё по всем правилам.

[identity profile] metaclass.livejournal.com 2012-02-25 07:41 pm (UTC)(link)
jni там в apache commons daemon присутствует, и стиль в коде мне не очень нравится, так что вполне может быть.

[identity profile] volodymir-k.livejournal.com 2012-02-26 12:36 pm (UTC)(link)
не-а, в демонсах там всё ок. у всех работает без проблем. я про ваши личные jni.

[identity profile] metaclass.livejournal.com 2012-02-26 12:43 pm (UTC)(link)
Я попробовал это дело на чистом jetty, без своего софта вообще - тот же эффект.
У меня такое подозрение, что только остановки jetty недостаточно для того, чтобы jvm можно было корректно закрываться.