diary/Kojima/2014-10-18
の編集
http://plamo.linet.gr.jp/index.php?diary/Kojima/2014-10-18
[
トップ
] [
編集
|
差分
|
バックアップ
|
添付
|
リロード
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
-- 雛形とするページ --
diary/Template
[[diary/Kojima]] ・GCC-4.8.3 bug GCC-4.8.3でGlibc-2.20をビルド、インストールしてみたところ、64ビット環境では問題ないものの、VirtualBoxで動かしている32ビット環境でコンソールからログインできなくなってしまった。 あれれ、と思って外部からsshで接続すると問題なくログインできる。「???」となりながら、ログファイルを調べてみると、postfixのログにこんなメッセージが残っている。 Oct 15 17:44:19 vm51_32 postfix/master[3087]: warning: /usr/libexec/postfix/pickup: bad command startup -- throttling Oct 15 17:45:19 vm51_32 postfix/pickup[3983]: fatal: setgid(16): Function not implemented Oct 15 17:45:20 vm51_32 postfix/master[3087]: warning: process /usr/libexec/postfix/pickup pid 3983 exit status 1 「なぜにsetgid?」と首をひねりながら、しばらく調べてみると、Glibc-2.20の[[リリース情報:https://sourceware.org/glibc/wiki/Release/2.20]]にこんな記述が。 3.1.22. x86 (32-bit, Linux) Some GCC releases miscompile the setxid support code in NPTL. This results in functions such as setgid failing with ENOSYS because an totally bogus system call number is being passed to the kernel. This has been fixed as GCC bug 61801. Build system: x86_64 GNU/Linux, gcc version 4.8.3 20140624 (Red Hat 4.8.3-1 (GCC), GNU assembler version 2.23.2 (x86_64-redhat-linux) using BFD version version 2.23.2, Linux 3.15.3-200.fc20.x86_64 (Carlos O'Donell). Built with -m32' and targetting i686-pc-linux-gnu'. どうやらこれっぽいな、とGCCのバグ情報を調べてみると、[[条件を一つ追加しているだけ:https://gcc.gnu.org/viewcvs/gcc/branches/gcc-4_9-branch/gcc/sched-deps.c?r1=212739&r2=212738&pathrev=212739]]だった。 ホントにこれだけで直るのか?と疑問に思ったので、パッチをあててないGCC-4.8.3とパッチ済みでGlibc-2.20をビルドして、make checkしたところ、パッチ前のGCCでは FAIL: nptl/tst-setuid3 FAIL: rt/tst-cpuclock2 Summary of test results: 2 FAIL 1667 PASS 120 XFAIL 4 XPASS だったのに対し、パッチ済みだと、 Summary of test results: 1669 PASS 120 XFAIL 4 XPASS となった。「なるほど」とビルドし直したglibc-2.20にアップデートしたところ、コンソールからログインできない問題も無事解決。 よくこんなの見つけたなぁ、、と思う反面、glibcのテストスーツでちゃんとチェックできていたことを見ると、やはり make check は必須かと反省。 #comment
タイムスタンプを変更しない
[[diary/Kojima]] ・GCC-4.8.3 bug GCC-4.8.3でGlibc-2.20をビルド、インストールしてみたところ、64ビット環境では問題ないものの、VirtualBoxで動かしている32ビット環境でコンソールからログインできなくなってしまった。 あれれ、と思って外部からsshで接続すると問題なくログインできる。「???」となりながら、ログファイルを調べてみると、postfixのログにこんなメッセージが残っている。 Oct 15 17:44:19 vm51_32 postfix/master[3087]: warning: /usr/libexec/postfix/pickup: bad command startup -- throttling Oct 15 17:45:19 vm51_32 postfix/pickup[3983]: fatal: setgid(16): Function not implemented Oct 15 17:45:20 vm51_32 postfix/master[3087]: warning: process /usr/libexec/postfix/pickup pid 3983 exit status 1 「なぜにsetgid?」と首をひねりながら、しばらく調べてみると、Glibc-2.20の[[リリース情報:https://sourceware.org/glibc/wiki/Release/2.20]]にこんな記述が。 3.1.22. x86 (32-bit, Linux) Some GCC releases miscompile the setxid support code in NPTL. This results in functions such as setgid failing with ENOSYS because an totally bogus system call number is being passed to the kernel. This has been fixed as GCC bug 61801. Build system: x86_64 GNU/Linux, gcc version 4.8.3 20140624 (Red Hat 4.8.3-1 (GCC), GNU assembler version 2.23.2 (x86_64-redhat-linux) using BFD version version 2.23.2, Linux 3.15.3-200.fc20.x86_64 (Carlos O'Donell). Built with -m32' and targetting i686-pc-linux-gnu'. どうやらこれっぽいな、とGCCのバグ情報を調べてみると、[[条件を一つ追加しているだけ:https://gcc.gnu.org/viewcvs/gcc/branches/gcc-4_9-branch/gcc/sched-deps.c?r1=212739&r2=212738&pathrev=212739]]だった。 ホントにこれだけで直るのか?と疑問に思ったので、パッチをあててないGCC-4.8.3とパッチ済みでGlibc-2.20をビルドして、make checkしたところ、パッチ前のGCCでは FAIL: nptl/tst-setuid3 FAIL: rt/tst-cpuclock2 Summary of test results: 2 FAIL 1667 PASS 120 XFAIL 4 XPASS だったのに対し、パッチ済みだと、 Summary of test results: 1669 PASS 120 XFAIL 4 XPASS となった。「なるほど」とビルドし直したglibc-2.20にアップデートしたところ、コンソールからログインできない問題も無事解決。 よくこんなの見つけたなぁ、、と思う反面、glibcのテストスーツでちゃんとチェックできていたことを見ると、やはり make check は必須かと反省。 #comment
テキスト整形のルールを表示する