Подтвердить что ты не робот

Что может привести к тому, что файл hs_err_pid не будет создан при сбое?

Мне нужно исследовать сбои клиентского приложения Java. Это приложение Swing, работающее в Java Web Start environement на Java SE 6 Update 23 в Windows. К сожалению, для некоторых случаев сбоя файл hs_err_pid не был создан. Это было не на рабочем столе, поэтому я искал его на ПК и не нашел (на рабочем столе был старый файл hs_err_pid, для того же приложения, поэтому было бы разумно предположить, что новый должен был быть создан там тоже). В конце журнала нет никаких исключений, поскольку это обычно происходит при сбое JVM в исключении Java, поэтому он выглядит как сбой, который должен привести к созданию файла hs_err_pid.

Нужно ли мне настроить что-то, чтобы заставить его работать? Может ли конфигурация доктора Ватсона повлиять на создание файла hs_err_pid?

Спасибо

Мы сконфигурировали Dr' Watson и проанализировали файл дампа ядра, который был создан после того, как приложение снова разбилось. Ошибка, которую я видел, это "Нарушение доступа". Из трассировки стека я смог увидеть, что авария вызвана исключением в собственном коде третьей стороны, которую мы используем. Этого было достаточно, чтобы делегировать им эту проблему.

Итог:
1. Некоторые ошибки Java не обрабатываются, как ожидалось, JVM, так что файл hs_err_pid не создается.
2. Конфигурация ОС для создания дампа ядра может помочь в этих случаях, так как сбой, который не обрабатывается JVM, будет обрабатываться ОС. В этом случае вы получите меньше информации, но это может быть полезно.

4b9b3361

Ответ 1

Если сбой произошел в результате переполнения собственного стека (как правило, это приводит к SIGSEGV, когда приложение пытается прочитать/записать страницу защиты стека), на многих платформах (например, Linux) не создается файл hs_err_pid, поскольку процесс, который создает файл, не может быть завершен, если вы находитесь вне пространства стека.

Ответ 2

Обратите внимание, что файлы hs_err_pid.log создаются только в случае фактического сбоя JVM.

Если ваше приложение "только" завершает работу из-за необработанного исключения где-то, тогда такой файл не будет создан.

Вы уверены, что авария была реальной катастрофой JVM?

Ответ 3

JDK 5 http://java.sun.com/j2se/1.5/pdf/jdk50_ts_guide.pdf

When a fatal error occurs an error log is created in the file

hs_err_pid.log(где идентификатор процесса процесса). где возможно, файл создан в рабочий каталог процесса. В событие, в котором файл не может быть созданный в рабочем каталоге (недостаточное пространство, разрешение проблема или другая проблема), то файл создается во временном каталоге для операционной системы. В Solaris и Linux - временный каталог /TMP. В Windows временно каталог задается значением переменная среды TMP, или если что не определено, значение Переменная окружения TEMP.