【AIによる回答】
systemd-coredump(またはsystemd-journald)がシグナル6(SIGABRT)を出力し、スタックトレースにlibc.so.6のmalloc_printerrが表示される場合、これはメモリ関連の深刻なバグを示しています。Red Hat Customer Portal +2このエラーは通常、システム(systemd)または実行中のアプリケーションがメモリの破損、ダブルフリー(double-free)、または無効なメモリ領域への書き込みを行った際に、libcが「これ以上動作を続けると危険」と判断してプロセスを中断(abort)したことを意味します。Stack Overflow +1
原因と対策の方向性
- メモリ破損(Double Free / Heap Corruption)
- 原因: プログラムが既に解放したメモリを再度解放した(Double Free)か、確保した領域を超えて書き込んだ(Heap Overflow)。
- 対策:
coredumpctlを使ってスタックトレースを詳細に確認し、どのプロセスが何をしている時にクラッシュしたかを特定する。- 特定のアプリケーションの不具合
- 事象: 特定のサービス(例えば
systemd-networkdやcriu)が繰り返し落ちる。- 対策: 関連パッケージを最新版に更新する。
- カーネルまたはライブラリのバグ(特にRHEL8系など)
- 事象: 2021-2022年頃のRHEL8(systemd-239以降)では、systemd自体がメモリ管理に失敗してクラッシュするバグが報告されていた。
- 対策: OSのマイナーアップデート(
dnf update)を行う。- システムリソースの限界
- 事象:
pam_systemdがタイムアウトし、セッション作成に失敗してコアダンプが生成される。Red Hat Customer Portal +5
デバッグ・解析方法クラッシュした原因を正確に突き止めるには、以下のステップを踏んでください。
- コアダンプの特定:
bashcoredumpctl list- スタックトレースの確認:
bashcoredumpctl info <PID>(#0
raise、#1abort、#4malloc_printerrという流れが典型的)- GDBを使った対話的デバッグ:
bashcoredumpctl gdb <PID> # GDB内で bt (backtrace) を実行※debuginfoパッケージがインストールされていると、より詳細な情報が得られます。
Red Hat Documentation +2即効的な回避策(緊急時)システムが不安定でログインできない、またはサービスが落ち続ける場合は、一時的にコアダンプの生成を停止して安定化を試みます。
- システム全体でコアダンプを無効化:
/etc/systemd/coredump.confでStorage=noneを設定する。- systemdの再起動:
システムが動作している場合は、systemctl daemon-reexecを実行。Red Hat Documentation +1
注意: ログに “Resource limits disable core dumping” が見られる場合は、ulimit -cの設定を確認してください。Red Hat Customer Portal
