私たちには、Javaプロセス(xalanまたはfop変換)が中断されることがあるシステム(Red Hat Enterprise Linux Serverバージョン6.6)があります。
これらのプロセスはそのままで完了しません。
/var/log/messages で次のエントリが見つかりました。
abrt[33580]: Saved core dump of pid 48556 (/usr/bin/jdk1.6.0_06/bin/java) to /var/spool/abrt/ccpp-2017-06-01-08:52:40-48556 (341344256 bytes)
abrtd: Directory 'ccpp-2017-06-01-08:52:40-48556' creation detected
abrtd: Executable '/usr/bin/jdk1.6.0_06/bin/java' doesn't belong to any package and ProcessUnpackaged is set to 'no'
abrtd: 'post-create' on '/var/spool/abrt/ccpp-2017-06-01-08:52:40-48556' exited with 1
abrtd: Deleting problem directory '/var/spool/abrt/ccpp-2017-06-01-08:52:40-48556'
- abrtを使用して問題に関する追加情報を収集できますか?
- ProcessUnpackagedをyesに変更すると役に立ちますか?
答え1
プロセスがaborted
1 つであるか、coredump
メモリに存在しなくなります。そのため、プロセスが停止したと思われる場合は、pid
プロセス情報を取得し、次のコマンドを実行します。
strace -fp <pid> -o strace.out
- プロセスが中断される可能性がある場所を示すシステムコールに役立ちます(出力ファイルstrace.outを参照)。
pstree -aAp <pid>
- 現在のプログラム実行行を表示します。
/usr/bin/gdb -q -p <pid> -- to see the current state of the process.
利用可能なものがあれば、coredump
それを使用してgdb
分析できます。
/usr/bin/gdb <java_binary_path> <coredump_path>
gdb
コンソールでは以下を使用します。
(gdb) bt
(gdb) thread apply all bt