2018/7/18 追記 3.10.0-862.9.1.el7 で fix されました
hiboma.hatenadiary.jp
2018/7/4 追記 最新の情報はこちらにまとめています
hiboma.hatenadiary.jp
2018/6/16 追記 CentOS Plus の kernel-plus では修正が入っています. 詳しくはこちらをご覧ください
hiboma.hatenadiary.jp
エントリの概要
CentOS7.5 の fsnotify() がレースコンディションを起こすバグを、 nginx + td-agent (fluentd) + in_tail プラグインで踏んだ際の調査内容を記していきます.
イントロダクション
このエントリを書いた時点では、CentOS 7.5.1804 以降でリリースされているカーネルは 3つありますが、カーネルの fsnotify() がレースコンディションを起こすバグを抱えています
- kernel-3.10.0-862.el7.x86_64
- kernel-3.10.0-862.2.3.el7.x86_64
- kernel-3.10.0-862.3.2.el7.x86_64
レースコンディションの修正パッチ
mainline では修正済みです。詳細と修正パッチは以下のコミットで確かめられます
github.com
v4.17-rc3 でパッチがマージされており、 stable にもバックポートされています
CentOS (というか RHEL) で問題は修正されていません.
下記のリンクを見るに、RHEL では問題を認識済みであるようです (サブスクリプションがないので詳細はわかりません)
Soft lockups occur in fsnotify() after updating to RHEL 7.5 - Red Hat Customer Portal
CentOSのバグトラッキングシステムでも把握されているようです
0014823: 3.10.0-862.2.3.el7.x86_64 kernel panic and crash under Xen PV with NMI watchdog: BUG: soft lockup - CPU#2 - CentOS Bug Tracker
2018/6/7 13:50 追記
0006828: Tracking for centosplus kernels for CentOS-7 - CentOS Bug Tracker
次のリリースで修正が入らない場合に CentOS 側で修正パッチを含めたカーネルを出すようですね. (注意 : distro kernel
が RHEL を指すのか CentOS を指すのか? CentOS Plus として出すのかな? )
レースコンディションの詳細
コミットログに詳細が記してある のですが ... SRCU という仕組みが関連するあたりが難しくてワカリマセン
勉強中です
カーネル内部で何が起こるには目をつぶり、ユーザランドで「どういう条件が重なる」と「どんなことが起こってしまう」のかでレースコンディションの問題を見ていきましょう.
続きを読む