7/22(日) 酷暑のサイクリング
飯能から秩父に出て、少しだけ散歩して、60km 獲得標高 737m 走って終わり。峠もちょっとだけ涼しかくはあったけど、どこに行っても暑さから逃れられない 🔥
続きを読むCentOS の 3.10.0-862.9.1.el7 がリリースされています
CEBA-2018:2198 CentOS 7 kernel BugFix Update https://t.co/yCL7TYgbHV
— CentOS announce (@CentOSannounce) July 17, 2018
しばらく前から fsnotify() がレースコンディンションを起こすバグをしばらくトラッキングしていましたが、このリリースで fix されました
kernel-plus
パッケージを使うことで問題を回避できましたが、今回のリリースで kernel
パッケージでも大丈夫となりました。nginx + td_agent + in_tail プラグインな構成を安心して動かせますね
下記が該当のログだと思われます
* Wed Jun 06 2018 Rado Vrbovsky <rvrbovsk@redhat.com> [3.10.0-862.7.1.el7] - [linux] fsnotify: Fix fsnotify_mark_connector race (Miklos Szeredi) [1584684 1569921]
changelog を信頼してない訳ではないですが、自分でも確かめました。上記エントリにも載せた再現スクリプトを実行してみて再現しませんでした。
大丈夫そうですね 。やったー
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 のステータスが resolved となりました
以降の記述はバグの再現をとったり、パッケージの差分をメモした内容です。詳細に興味がなければスキップしてください
続きを読むこれの続きを調べていた
SPRM からソースを展開して、問題のあるカーネルとそうでないカーネルとの diff を見ながら、関係がありそうな変更を削ったり/足したりしながら手元でビルドして試したころ、下記の変更によって起きる問題だと絞り込めた
diff -ru /home/vagrant/rpmbuild/BUILD/kernel-3.10.0-862.el7/linux-3.10.0-862.el7.centos.x86_64/arch/x86/kernel/entry_64.S /home/vagrant/rpmbuild/BUILD/kernel-3.10.0-862.2.3.el7/linux-3.10.0-862.2.3.el7.x8 6_64/arch/x86/kernel/entry_64.S --- /home/vagrant/rpmbuild/BUILD/kernel-3.10.0-862.el7/linux-3.10.0-862.el7.centos.x86_64/arch/x86/kernel/entry_64.S 2018-03-21 21:40:12.000000000 +0000 +++ /home/vagrant/rpmbuild/BUILD/kernel-3.10.0-862.2.3.el7/linux-3.10.0-862.2.3.el7.x86_64/arch/x86/kernel/entry_64.S 2018-04-30 14:05:40.000000000 +0000 @@ -1400,7 +1400,7 @@ .pushsection .kprobes.text, "ax" paranoidzeroentry_ist debug do_debug DEBUG_STACK -paranoidzeroentry_ist int3 do_int3 DEBUG_STACK +zeroentry int3 do_int3 errorentry stack_segment do_stack_segment #ifdef CONFIG_XEN zeroentry xen_debug do_debug
上記の変更を取り除くと、SIGSEGV は治まった.
https://git.centos.org/summary/rpms!kernel.git を git clone して imports/c7/kernel-3.10.0-862.2.3.el ブランチの SPECS/kernel.spec を見て見るに下記の変更っぽい
%changelog * Mon Apr 30 2018 Rado Vrbovsky <rvrbovsk@redhat.com> [3.10.0-862.2.3.el7] - [x86] kvm: fix icebp instruction handling (Paolo Bonzini) [1566849 1566845] {CVE-2018-1087} - [x86] entry/64: Don't use IST entry for #BP stack (Paolo Bonzini) [1567084 1567083] {CVE-2018-8897} 👈
(CentOS で spec ファイルの %changelog と diff を付き合わせるよい方法がわからない)
もともと upstrem には下記のコミットでマージされたようだ.
自分が見ていたコードとはだいぶ違う. バックポートの際に変更が加わっているのだろう
CVE-2018-8897 の fix である
コードを追って見たものの、どうやって不具合に至るのかという詳細まではよく分からない 🙃
/sys/kernel/debug/tracing
がぶっこわれているということで、 似たような問題が下記で議論されたり パッチが revert されていた
bugs.centos.org にどうやってレポートするといいか考えている
6/24(日) 前日から天気が崩れていたが、午後にかけて晴れ始めたタイミングで出走。が、湿気と日差しと強烈でバテたので、すぐ帰った
90km 走って終わり. 夏場は涼しい時間に山に入って、暑さを避けないと距離を稼げないなぁ
雨上がりで澄んだ空気
途中、所沢のあたりで蝉の鳴き声を聞いた気がする.
日高市の巾着田のあたりから奥武蔵グリーンラインに入ろうとしたのだけど、なんと通行止め
ここで完全に気力がはてた. 帰って風呂に入る決意を固める
帰路で川越を通過。喜多院で小休憩.
観光客も少なくてのんびりしてた
これの続き.
分かっている事をまとめて 0014961: perf probe / perf record cause segmentation fault - CentOS Bug Tracker にバグレポートをだして Confirm してもらえました.
上記のエントリを書いたのだが、VM を作り直したところ再現がとれなくなったので改めて検証しなおした.
(別のバグを調査した VM を使いまわしたのだが、パッケージインストール後にカーネルパニックを起こした影響かでパッケージ/ファイルの一部が欠損しまったらしい)
[vagrant@localhost ~]$ uname -a Linux localhost.localdomain 3.10.0-862.3.3.el7.x86_64 #1 SMP Fri Jun 15 04:15:27 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux [vagrant@localhost ~]$ rpm -q perf perf-3.10.0-862.3.3.el7.x86_64 [vagrant@localhost ~]$ rpm -q glibc glibc-2.17-222.el7.x86_64
perf probe で malloc を追加する
[root@localhost ~]# perf probe -x /usr/lib64/libc.so.6 malloc Added new event: probe_libc:malloc (on malloc in /usr/lib64/libc-2.17.so) You can now use it in all perf tools, such as: perf record -e probe_libc:malloc -aR sleep 1
[root@localhost ~]# perf record -e probe_libc:malloc -aR sleep 1 perf: Segmentation fault Segmentation fault
perf が Segmentation fault する.
続きを読む