CentOS7.5 の fsnotify がレースコンディションを起こすバグを nginx + td-agent + in_tail プラグインで踏む

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 は?

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

f:id:hiboma:20180607135306p:plain

次のリリースで修正が入らない場合に CentOS 側で修正パッチを含めたカーネルを出すようですね. (注意 : distro kernelRHEL を指すのか CentOS を指すのか? CentOS Plus として出すのかな? )

レースコンディションの詳細

コミットログに詳細が記してある のですが ... SRCU という仕組みが関連するあたりが難しくてワカリマセン

勉強中です


カーネル内部で何が起こるには目をつぶり、ユーザランドで「どういう条件が重なる」と「どんなことが起こってしまう」のかでレースコンディションの問題を見ていきましょう.

続きを読む

GW(4) 泉ヶ岳 🚲

5/5(土) 仙台の泉ヶ岳をのぼってきた

f:id:hiboma:20180509111058p:plain

仙台市内から1時間ちょいでアクセスできるスキー場。近い割に獲得標高もそこそこで、一部かなりハードな斜度もあるヒルクライム場だった

hillclimblist.com

走行距離 64 km, 獲得標高 967m

続きを読む

GW(3) 宮城蔵王 🚲

5/4(金) 宮城蔵王越えにチャレンジしたが、急激な悪天候や準備不足で走破を諦め途中で引き返した

f:id:hiboma:20180508133633p:plain

過去、何度か仙台に自転車で訪れているものの、毎回雨模様で天気に恵まれないのだが、今回も悪天候にやられれてしまった

走行距離 122 km, 獲得標高 1,997m 走行時間 6:45:19 総時間(休憩・停車含む) 10:12:13

続きを読む

GW(2) 那須〜仙台 🚲

5/2(火) 那須から仙台へと帰省

をメインルートとした

349号線は交通量の少ない穏やかな道で信号もほとんど無く、宮城の丸森まで延々と北上するコースになる。ただし、4号線よりも細かなアップダウンが続くので体力はジワリジワリと削られる

結果を見てみると、東京都内〜奥多摩〜柳沢峠を走るのと同じくらいの獲得標高と、2倍の走行距離となった。優しいルートでは無いかな ...

hiboma.hatenadiary.jp

走行距離 252 km, 獲得標高 1797m, 走行時間 11時間29分, 総時間 (休憩・停車含む) 15時間25分

続きを読む