SLES 12.4|システムコアダンプ[]:リソース制限の解決に失敗しました。

SLES 12.4|システムコアダンプ[]:リソース制限の解決に失敗しました。

/var/log/messagesそして、私が見ることができるように、コアを頻繁にダンプするカスタムデーモンを持つSLES 12.4 VMを使用していますcoredumpctl。しかし、/var/lib/systemd/coredump/他の場所ではコアファイルを見たことがありません。エラーが表示されます/var/log/messages

systemd-coredump[<PID>]: Failed to parse resource limit: <daemon_name>

コアサイズ制限をunlimitedに設定しました/etc/security/limits.conf。また、アプリケーションコアダンプも有効にしました/etc/systemd/coredump.conf。ただし、手動で実行すると、次のようになります。

[ 12.4 sles ~]# kill -SEGV <daemon PID>

コアが見つかりました/var/lib/systemd/coredump

/etc/security/limits.conf:

#<domain>      <type>  <item>         <value>
#

*                soft    core            -1
#*               hard    rss             10000
#@student        hard    nproc           20
#@faculty        soft    nproc           20
#@faculty        hard    nproc           50
#ftp             hard    nproc           0
#@student        -       maxlogins       4

/etc/systemd/coredump.conf:

[Coredump]
Storage=external
Compress=yes
#ProcessSizeMax=5G
#ExternalSizeMax=9G
#JournalSizeMax=767M
#MaxUse=
#KeepFree=

/etc/sysctl.d/50-coredump.conf:

kernel.core_pattern=|/usr/lib/systemd/systemd-coredump %p %u %g %s %t %e

限界状態:

[12.4-sles:~]# ulimit -c
unlimited

カーネル起動コアダンプのコアをどのように取得しますか?

答え1

コンテンツが間違っているようです。/etc/sysctl.d/50-coredump.confとフィールドの間に追加のコンテンツが必要です。%c%t%e

ulimit -cコアダンプファイルを保存するか切り捨てるか(つまり、設定を尊重するulimit -c)決定するために、systemd-coredumpに渡すためのサポートを導入した変更でこれを確認できます。

この変更にはkernel.core_patternsysctlのコマンドラインを変更する必要がありますが、そのファイルの以前のバージョンがシステムに存在するようです。

これは、RPMが元のファイルを保存する必要があると思うためです(1つ/etc/sysctl.d/50-coredump.conf.rpmnewまたは他の.rpm*拡張子を見つけると手がかりを得ることができます)。

それにもかかわらず、このファイルを更新すると問題が解決します。


この問題の原因の詳細については、あなたが報告したメッセージを調べました。

systemd-coredump[<PID>]: Failed to parse resource limit: <daemon_name>

それからメッセージを見つけました。ソースツリーからしかし、コードは数字で解析できるRLIMITを受け取ることを期待しているので、そのメッセージを受信すると言ったときにフィールドを<daemon_name>間違った順序で受信するという事実にショックを受けました。

あなたの問題を見て、50-coredump.confそれをアップストリームツリーのツリーと比較した結果、あなたが経験している問題は、この不一致による可能性が高いという結論に急速に達しました。

関連情報