Firefoxが1月13日に一時使用不能になった問題の詳細が判明 21
ストーリー by nagazou
判明 部門より
判明 部門より
1月13日に世界中の「Firefox」が約2時間ほど一時的に使用不能になった。原因に関してはHTTP3接続に関する問題が誘発されたとされていたが、このとき、Firefoxに何が起きたかについて、2月2日のMozillaの公式ブログで解説が行われている。それによるとMozilla側は原因の解明過程で、Firefoxの内部サービスの一つへのネットワーク要求でハングアップが起こっていることが判明したという。そのことから、ロードバランシングに使用しているクラウドプロバイダーの1社の設定変更が原因ではないかと推測(Mozilla Hacks - the Web developer blog、窓の杜)。
さらに調査を進めた結果、テレメトリサービスのロードバランサ―で、それまでは行われていなかったHTTP/3接続が行われていたことが判明し、「Google Cloud Platform(GCP)」上でHTTP/3を明示的に無効化したところ、ユーザーのブロックが解除されたという。GCPのHTTP/3サポートを自動(既定)にしていたところ、1月13日07:28(協定世界時)に告知なく有効化されていたことが判明したとのこと。
さらに調査を進めた結果、テレメトリサービスのロードバランサ―で、それまでは行われていなかったHTTP/3接続が行われていたことが判明し、「Google Cloud Platform(GCP)」上でHTTP/3を明示的に無効化したところ、ユーザーのブロックが解除されたという。GCPのHTTP/3サポートを自動(既定)にしていたところ、1月13日07:28(協定世界時)に告知なく有効化されていたことが判明したとのこと。
ひどい抜粋だ (スコア:1)
この抜粋だと
・FirefoxはHTTP/3を有効化していた
・GCPが事前通告なしにHTTP/3有効化した
・だからFirefoxでHTTP/3が出来なかった
って意味不明な内容になっちゃう
原因は
ヘッダの文字列一致でHTTP/3を判定する箇所において
小文字と大文字の違いが出て見逃してました
ってことなんだが
Re:ひどい抜粋だ (スコア:1)
> ヘッダの文字列一致でHTTP/3を判定する箇所において小文字と大文字の違いが出て見逃してました
これは Firefox が使用不能になった原因
今回のタレコミは,Firefox が【1月13日】に使用不能になった原因,とFirefox が使用不能になった原因を突き詰めるまでの過程.タレコミにあるように「Firefoxに何が起きたか」という話題.
Re: (スコア:0)
流石にその言い訳は苦しいのでは?
その理由で端折ってこの抜粋ならなお悪い
書き忘れではなく意図的に原因を書かずにGCPのせいだけにしているってことだよ
Re:ひどい抜粋だ (スコア:1)
何故その日に発生したのか(何故その日まで発覚しなかったのか)と、コード上の原因はわけて考えられるべきだと思いますよ。
その前者にしか触れていない抜粋が妥当かどうかは断じませんし、後者のコード上の問題(コンポーネントの連携部の齟齬)についても興味深かったので読むことはオススメしたいですけどね。
GCPが事前連絡無く設定を変更したのも悪いけど、Googleだから、で納得してしまう部分はある。
Re: (スコア:0)
障害対応で、再現の条件は?とか聞きたくならない人かな。
Re: (スコア:0)
いや抜粋は正しいですよ。なぜなら元記事がそう書いてるからです。
ソースコード的にはヘッダ文字列の処理(+バッファ長の扱い)にバグがあったわけですが
元記事は mozillaの開発者ブログなので、読者はみんなバグの件は大体知ってるという前提で書かれています。
そのうえで元記事はそのバグが発見され修正された経緯について書かれています。だからこの抜粋で正しいのです。
元記事を読まずにタレコミが酷いと非難するのはやめましょう。
スラドも少しは見習ったら? (スコア:0)
少し前に二日くらい間全く更新されない障害起こしてたけど、いまだに公式の報告ないよね?
Re: (スコア:0)
改善計画もなく報告だけされてもなあ。
失望しました、みくにゃんのファン辞めます。 (スコア:0)
> 「Firefox」のHTTP/3接続は、すべてネットワーキングスタック「Necko」を経由する。
キツネのくせに、ネコを頼るなんて。
Re: (スコア:0)
firefox は狐でない。ネコばかりかトカゲも飼っている。
Re: (スコア:0)
なんか すみっコぐらしっぽい。。
Re: (スコア:0)
キツネはネコ目です
旧食肉目 (スコア:0)
目の名前をその中の動物一匹に変えるとかいう滅茶苦茶やっただけだし…
Re: (スコア:0)
ちなみにHTTP/3用ライブラリの名前はNeqo
この件ずっとRFCに無頓着 (スコア:0)
Bugzillaのチケット [mozilla.org]見ても
HTTP headers are case insensitive.
と書いているし、窓の杜の記事見ても、
「Necko」は「Content-Length」ヘッダーを追加する際、大文字と小文字を正しく挿入するため、この違いは通常、問題とならない。しかし、「viaduct」を通過するリクエストは「Content-Length」ヘッダーを小文字に変換してしまう。
とあって、何故かRFC通りの小文字変換が誤っていて、大文字小文字混在のRFC違反が正しい挿入とされている。
修正がcase-insensitiveなのは理解するけど、「RFC違反だけど仕方なし」の認識ではないのかな……
Re: (スコア:0)
case insensitive なら大文字小文字混在で問題ないのでは?
もちろんすべて小文字、すべて大文字も違反になりませんが。
なぜRFC違反になると考えたのですか?
Re: (スコア:0)
ごめん。勘違いでした。
・HTTP 2.0 以降は lower case が MUST
・んだけども、処理は case insensitive で扱う必要がある
よって、プログラマの瑕疵としては、
・lower case 以外が来ることを想定していない
・content-length が得られない状況を想定していないうえ、ハングするようになってる
の両方がある
Re: (スコア:0)
また間違えたすまねぇ。
プログラマの瑕疵としては、
・ヘッダーを case sensitive で扱っていた
・content-length が得られない状況を想定していないうえ、ハングするようになっている
・動作テストが不十分だった
nightly とか beta をすり抜けたのは残念
Re: (スコア:0)
RFC を金科玉条に小文字だけ処理したら
大文字使っている野良サーバで動かなくなる。
現実を見て大文字小文字を受け付けるべき。ブラウザは。
たとえば HTML/CSS も閉じタグがなかったり、
誤った使い方でも表示するように実装している。ブラウザは。
実用的なものを作るには RFC から外れた対応も必要です。ブラウザ以外でも。
Re: (スコア:0)
世の中、HTTP/1.1な組み込み機器とかある訳で、最新版以外知らんという訳にはいかない。
Re: (スコア:0)
前回のストーリーで、RFC本文には確かに小文字とあるがサンプルがなぜか大文字小文字混じりになっているという罠があると聞いた