2016-09-19 8 views
0

См. here для оригинального вопроса.Понимание hs_err_pid <n> .log file

Я пишу службу Java, используя Jetty для Webserving и SQLite для хранения базы данных. Источник доступен here.

Я обнаружил, что хотя служба работает стабильно с моего ноутбука, когда она была развернута в экземпляр EC2, она потерпит крах без очевидного сообщения об ошибке на выходе от 1 часа до 2 дней с момента запуска. Я добавил некоторые параметры ведения журнала для запуска (-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=...) и получил this crashlog.

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

  • This answer ссылки на blog который -1'd в ответ комментарии
  • This answer ссылки на какой-то Oracle documentation, которые я обычно бы вне себя от радости, но это, кажется, общее руководство отладки - может» что-то там о файлах hs_err (хотя это может стать ясным при дальнейшем чтении)
  • This result from Google утверждает, что «какой бы Java-код не выполнялся, JVM никогда не должен терпеть крах. Если это так, это просто ошибка JVM. зарегистрируйте дефект с Солнцем со всеми подробностями и, надеюсь, они это рассмотрят ». Это звучит довольно абсолютистски - я думаю, что это очень маловероятно что мой маленький игрушечный проект раскрыл ошибку JVM!

ответ

0

Если посмотреть на crashlog, кажется, что что-то, что вы распаковывали (файл jar или zip-файл), приводило к сбою JVM.

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

java -verbose:class [more command line] 
0

Сбои в Java_java_util_zip_ZipFile_getEntry чаще всего вызваны одновременным доступом к файлам .zip, например файл перезаписывается, пока существует открытый экземпляр.

См. JDK-8042197, JDK-8031691 для деталей.

BTW, что касается оригинального вопроса, вот presentation на JVM анализ аварийного дампа.