ページ内ジャンプ:

アレゲなニュースと雑談サイト

hylomによる 2008年08月05日 18時36分の掲載

KAMUI 曰く

NTT東日本および NTT西日本の「ひかり電話」で、「VoIPアダプタを電源投入後約8ヶ月(249日)間連続して利用すると、ひかり電話の発着信ができなくなる」という、バグが発見された(Nikkei NetNTT東日本のニュースリリースNTT西日本のニュースリリース)。NTT東西では7日にもアップデートを行うことを明らかにしている。

問題があるのは「PR-200NE」「RT-200NE」「RV-230NE」(NTT東日本)と「AD-200NE」(NTT西日本)で、合計約126万台(東日本120万台、西日本6万台)。ファームも複数のバージョンにまたがっており、電源投入後249日(約8ヶ月)連続使用すると発着信が出来なくなるというもの。なお、8ヶ月連続使用する以前にファームのバージョンアップをしたり、電源アダプタの抜き差しを行っていた場合にはそこで日数も一旦リセットされる。

(つづく...)

また、Anonymous Coward曰く、

症状からは、起動時に0からスタートし10msecごとに1つずつアップしていく32ビット符号ありの変数のカウンタが存在し、そのカウンタ変数のオーバフロー時に問題が生じていると推測できます。 Linux、Windowsの497日問題など、このようなオーバーフローバグの事例は多いです。バグになるという認識が浸透していないのでしょうか。

なお、値x、yの大小比較をオーバフローを考慮して比較するには、x、yが符号ありintか符号なしintのどちらかの場合、((int)(x-y))と0との大小比較を行う実装方法があります。

この議論は賞味期限が過ぎたので、保存されている。 新たにコメントを書くことはできない。
表示オプション しきい値:
  • motamota (30138) : 2008年08月05日 19時06分 (#1397396)
    一般家庭における年間平均停電時間 [wikipedia.org]
    アメリカ 73分、イギリス 63分、フランス 57分、日本 9分

    ほかの国なら顕在化しない問題だったりするのかな。
  • apt (28270) : 2008年08月05日 8時20分 (#1396907) 日記
    249日ということは、10msおきにカウントするような、signedで32bitのカウンタが有って、
    それがオーバーフローするときの処理に何かバグが有った、という感じでしょうか。
    (249*24*60*60*100 = 2151360000 = 0x803b2600)

    • Masw. (17831) : 2008年08月05日 20時54分 (#1397482)
      まぐまぐ!が過去に配信したメールマガジン [mag2.com]によると、@5msで248日になるそうです。あとがきより引用します。

      また、タイマの値も43億までで、10ミリ秒ごとに1つずつ値を
      増加させると497日と少しで43億となります。
      5ミリ秒ごとだと248日と少しです。
      WindowsやLinuxでは497日問題や248日問題というものがあり
      ます。
      これは32ビットOSの問題なのでネットワーク機器でも起こりえます。
      こういうところからも、OSは定期的にリブートしておいたほうが
      無難、という結論が得られます。
    • 1個のコメント が現在のしきい値以下です。
  • 長電話はするな (スコア:4, おもしろおかしい)

    virtual (15806) : 2008年08月05日 18時58分 (#1397388)
    ってことですね。

    #多分違うだろうなー
  • Anonymous Coward : 2008年08月05日 22時16分 (#1397555)
    一般人:
    でんわつかえないどうしよー!受話器ガチャガチャ3回リトライ
    携帯からサポートへ連絡「急に一切電話がかからなくなって、」

    逸般人:
    あれーおかしいなー、がしょがしょ。熱は普通、プチッ(プラグを抜く)うーん
    サクッ(プラグ刺す)あ、つかえたよしよし。
    • 「調子が悪かったらとりあえず電源を入れ直す」なんてのは、一般人の方が逸般人よりありがちじゃないですかね。
      問題は「いきなり電源を切っちゃヤバイもの」でも平気でコンセントから引っこ抜いちゃいすることで…

      1週間ほど前、自宅の無線LANが不調になって、結局アクセスポイントの再起動で復旧したということがありました。
      でもって数日前、私が在宅じゃない時に、妻のノートPCでインターネットが出来なくなったのですが、上記トラブル対応を上辺だけ真似して、「アクセスポイントの他にルーターなどネットワーク機器が繋がっている大元の電源プラグ」を何度か「引っこ抜いて挿す」→「直ったかどうか試す」なんてことをやられてしまいました。

      自宅サーバでWWW/メールとかも受けてるので、ネットワーク接続を常時監視しているのですが、その頃、私は職場にいて、ネットワークが切れたのを知りあせりました。
      フレッツ光でプロバイダは2つ併用していますがどちらも不通なのでプロバイダは無実と推定。NTTの工事・故障情報にもなにもなし…
      って途方に暮れかけたところでネットワークが復旧。帰宅してから顛末を聞いて脱力です。

      #「インターネット出来ない」のトラブルはPC側が原因で、無線LAN用PCカードのドライバを再インストールしたら直りました。
    • 1個のコメント が現在のしきい値以下です。
  • Deasuke (34806) : 2008年08月05日 20時11分 (#1397449) 日記
    > なお、値x、yの大小比較をオーバフローを考慮して比較するには、x、yが符号ありintか符号なしintのどちらかの場合、((int)(x-y))と0との大小比較を行う実装方法があります。
    「オーバフローを考慮して比較するには」という言い方で、万能薬と勘違いしてコピー&ペーストする人が出ないために一言。
    この方法が有効なのは当然ですが「x, yが(unsigned) intの範囲外かもしれないが、x-yがintの範囲内であることが保証される場合」です。

    オーバフローの例ではないですが、unsigned intのないJavaでintに入っているx, yをunsigned intだと思って比較するにはx-yはintの範囲には入らないかもしれないので別の方法、例えば
    x + Integer.MIN_VALUE < y + Integer.MIN_VALUE
    などを用います。
    --
    Best regards, でぃーすけ
    • 元の表現の「当然ですが」は後側に掛っています。ここを勘違いしているなら読みなおしてくれ。で、

      > 結論に達するのはよっぽど自分に自信があるんだな。
      そうだよ。「x, yが(unsigned) intの範囲外かもしれないが、x-yがintの範囲内であることが保証される場合」というのが正確な条件の表現だよ。
      もちろん、「xやyが範囲外かもしれない」という表現からも分かるようにx,yなどはMathematical Valueで考えるよ。

      > 0x80000000以上の変化が存在するときは正常に比較できないことだ。
      これは間違い。

      例えば、(以下多くの処理系が採用しているようにintはsignedで32bitとする)
      int x = y = 1
      x += 0x90000000;
      x -= 0x80000000;
      の場合は0x80000000以上の変化が存在するが(x-yのMathematical Valueは0x10000000でintの範囲内だから) x - y > 0 で正常に比較できる。

      iny x = 0;
      int y = -0x7fffffff;
      ++x;
      の場合は0x80000000以上の変化が存在しないが(x-yのMathematical Valueは0x80000000でintの範囲内でないから) x - y > 0 で正常に比較できない。

      すなわち「0x80000000以上の変化が存在するかどうか」はx-y>0で正常に比較できるかどうかと関係ない。
      あくまでも比較可能である条件は私の書いたのが正確。

      ちなみに君が勘違いした理由かもしれないものの一つを挙げておくと、
      「片側の変数が変化しない場合に限り、もう片側の変数のトータルの変化が0x80000000以上の変化が存在しない」は「x-y>0で正常に比較できる」ことの必要条件である(上記の反例の通り、十分条件ではない)。

      --
      Best regards, でぃーすけ
    • 1個のコメント が現在のしきい値以下です。
  • 全部Nがつくだろ (スコア:2, おもしろおかしい)

    Futaro (2025) : 2008年08月05日 19時39分 (#1397417) ホームページ 日記
    「ほら、全部Nが付いてるよな。どこのメーカーかわかるだろ?」
    「あ!、ナショナルか!」
    「おまえ、この業界の人間じゃないな。。。しかも古いし。」
  • Anonymous Coward : 2008年08月05日 19時50分 (#1397425)
    この問題でひかり電話が使えなくなりました。
    電話が掛けられなくて気づいたんですけど、通話ログは正常時しか残ってませんでした。
    うちは月2・3回しか家電話を使わないので、

    ・いつからVoIP機能が使えなくなったのか
    ・その間電話が掛かって来たのか分かりません

    いっそルータ機能も止まればネットが使えなくて直ぐ気づいたのですが・・・
  • 素朴な疑問 (スコア:1, 興味深い)

    Anonymous Coward : 2008年08月05日 20時57分 (#1397484)
    なんで(積算でもない)通電時間を管理してるん?
    • Re:素朴な疑問 (スコア:1, 参考になる)

      Anonymous Coward : 2008年08月05日 23時54分 (#1397632)
      ウォッチドッグの基本は
      「正常に動作しているなら、カウントダウン(アップでもいいけど)が進まないようにする」
      「従って、異常になったら進む(場合もあり、それが検出対象)。一定値まで行ったら異常検出と見なす」
      なので、今回の件とは関係無い。

      249日も余裕を見たウォッチドッグだとしたら存在自体がギャグ。
    • 2個のコメント が現在のしきい値以下です。
  • Anonymous Coward : 2008年08月05日 21時18分 (#1397504)
    局側からリモートでリブートすればいいのに何故出来ないんだ?
  • 装置三つ(モデム、ルータ、VoIP)の電源を入れ直したら、いきなりネットがつながらなくなってあせりました。
    もう一度、モデムの電源を切って回復。電源切った時に壊れるってのも良くあるからな。どきどき...
  • Re:Windowsでも (スコア:2, 参考になる)

    gf1e (33031) : 2008年08月05日 20時14分 (#1397451) 日記
    Windows 95〜98ですね。こちらはミリ秒単位で32ビット符号なし。
    Windowsの「49.7日バグ」の真相 [ascii24.com]
  • aruefu (34582) : 2008年08月05日 21時50分 (#1397532)
    1.夏期休暇や計画年休でのローテーションで休暇。 とか
    2.自社じゃなく顧客側のシステム担当が上記のためとばっちりで忙しい。 とか
    3.アレが迫ってるし駆け込みの準備でそれどころじゃない。 とか
  • Re:オフトピ (スコア:2, おもしろおかしい)

    Anonymous Coward : 2008年08月06日 0時37分 (#1397659)
    2002年の記事が今ごろ出るくらいだぞ。
    むしろ早い方だ。
  • 6個のコメント が現在のしきい値以下です。