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