パスワードを忘れた? アカウント作成
9409 story

大日本印刷のETCカードにバグ 60

ストーリー by wakatono
if(ETCUseCount==200+99*n){error();} 部門より

saitoh 曰く、 "大日本印刷製造のETCカードに不具合があり、利用しているクレジット会社では順次交換するとのこと。 出光カードからのアナウンス

ゲートと通信するETC機能そのものの不具合ではなく、カードローカルな機能のソフトウェアのバグのようだ。音声機能や液晶ディスプレイのついたETC車載装置では、200,299,398,497・・・回目にETCを使うと、実際の利用額と異なる金額がアナウンス/表示されることがあるらしい。 ブザーとランプしかない安価な車載機ではバグは発現しない模様。

出光ETCカードの場合、トラブルが起きていない顧客に関しては来年1月下旬から交換を開始するとのこと。車載機がエラーになってETCが利用不能になる症状が出ている顧客に関してはすぐに交換してくれるそうだ。 なお、出光以外で大日本のETCカードを使っているカード発行会社がどこなのか調べてみたが、不明。"

規則性はすぐにわかったが、なぜそうなったのだろう…

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • VIEWカード (スコア:2, 興味深い)

    by wadatch (6649) on 2004年12月28日 14時31分 (#671766) 日記
    VIEW ETCカードもおそらく同様のバグから、交換カードが届いています。
    • OMC-ETCも (スコア:1, 興味深い)

      by Anonymous Coward on 2004年12月28日 15時44分 (#671809)
      OMCのETCカードもそのような通知が来ていました OMCのETCは組み合わせるクレジットカードによっては 「年会費一切無料」 になるので、利用者が多そうな気がするのですが
      親コメント
      • Re:OMC-ETCも (スコア:1, 興味深い)

        by Anonymous Coward on 2004年12月28日 18時41分 (#671883)
        三井住友カードユーザのわたしんところにも、 今週この障害の通知が来ました。
        順次交換カード発送とのこと 銀行系は利用者多いだろうなぁ。
        大日本印刷の中の人は大変だなこりゃ(笑
        親コメント
  • もしかして… (スコア:2, 参考になる)

    by ramsy (8353) on 2004年12月28日 16時49分 (#671837) ホームページ 日記
    #define RIREKI_MAX 100
    #define RIREKI_LEN 2048

    char rireki[RIREKI_MAX][RIREKI_LEN];

    i=count;
    while(i>=RIREKI_MAX){
        i-=100; //本来ならRIREKI_MAXとすべき。
    }
    strncpy(rireki[i], src, RIREKI_LEN-1); //本来なら iではなくi-1を指定すべき
    rireki[i][RIREKI_LEN-1]=0;
    //101+99*n(n=1~)でメモリオーバフローして…

    みたいなドジカマしたのでは…

    // %を使わないのはわざとです。開発はアセンブリでしょうけど、
    // Cでしか表現できませんでしたorz
    --
    # rm -rf ./.
    • by Anonymous Coward
      素朴な質問。

      >// %を使わないのはわざとです。開発はアセンブリでしょうけど、

      ここで言うアセンブリというのはどういうものでしょう?
      • ぐ、typoです。マシン語、という意図でした。
        --
        # rm -rf ./.
        親コメント
      • by Anonymous Coward
        とりあえず.NET界隈でのアセンブリでないのは確かでしょう。
        つーか、いわゆるところのアセンブリ言語でそ?普通わかりそうなものだが。
        アセンブラ言語やアセンブラと呼ばれることもあるし、個人的にもそう呼ぶことがあるけど、機械語翻訳ツールとしてのアセンブラと区別する必要のある文脈ではアセンブリ言語のことをアセンブラとは絶対に言わない。
  • 間違えました (スコア:1, おもしろおかしい)

    by Anonymous Coward on 2004年12月28日 15時11分 (#671792)

    200,299,398,497・・・回目にETCを使うと

    一生のうちに一度も起こるかどうかのバグに対応しただなんて、ETCカードの中の人も大変だなぁ、と思ってしまいました。

    いや、単にカンマを桁区切り文字だと誤解した(二千億回)だけの話なんですがね。

    • by sakuya-m (14007) on 2004年12月28日 16時21分 (#671825) 日記
      >200,299,398,497・・・回目にETCを使うと
      私も思った口ですorz

      200回目,299回目,398回目,497回目・・・回目にETCを使うと
      or
      200、299、398、497・・・回目にETCを使うと
      だと読み間違えなかったと主張してみる。

      # この親レスなかったらそのまま話を広めてたと思うと。。。ガクガク
      ## そうか、4桁まで書いておいてもいいなぁ。多くなるけど。
      --
      ---にょろ~ん
      親コメント
    • by SG152BMSK (21862) on 2004年12月29日 2時10分 (#672066)
      75年生きるとして、
      200,299,398,497÷75=2670658646.6267
      2670658646.6267÷365=7316873.0044567
      7316873.0044567÷24=304869.70851903
      304869.70851903÷60=5081.1618086505

      だいたい一分間に5081回くらいETCの前を通過すると死ぬ頃にはそのバグに出会えそうです。

      #計算あってる?間違ってる?
      親コメント
      • by virtual (15806) on 2004年12月29日 22時21分 (#672347)
        間違ってます。
        ETCの前を二回(入り口と出口)通過しないと課金されません。
        今回のは出口のETC通過の際の課金情報のバグです。
        したがって、必要なETC前通過回数はその倍です。

        #閏年とかの無粋な突っ込みは無しにしてもこれは見逃せません。:)

        #ついでに、日本の高速道路のICの平均間隔は10km [google.co.jp]なので
        #1分で10kmを5081回突っ切るのは秒速800kmを越え、実に光速の0.3%にもなります。
        親コメント
      • by chute (19365) on 2004年12月29日 13時02分 (#672195)
        生まれたばかりの子供にはETCカードは発行されていないだろうから,20歳くらいの人が後75年生きないと.
        親コメント
    • by Anonymous Coward
      私も最初そう思いました。
      カンマじゃなくてスラッシュで書いてくれれば間違えなかったのに。
    • by Anonymous Coward
      二進数に直すと、ビット溢れになるのかもしれませんよ。
      これだけデカイ数の二進数電卓ってあるんでしょうか(笑)
  • ETCって料金所での渋滞を緩和する目的で作られたのでは無かったのでしょうか?
    なぜ、この頻度の上がるときに限って判明するのやら…
    続出しないことを祈ってます
    #そういうことなのでID
    #ICカードにもプログラムが載ってるんだ…スゴイ
    --
    --- *pucString
  • 規則性 (スコア:0, フレームのもと)

    by oltio (3848) on 2004年12月28日 14時04分 (#671752) 日記
    出光のプレスリリースにきっちり書いてありますが。
    • by joshkata (4660) on 2004年12月28日 14時11分 (#671756)
      編集者がコメントしているのは、「なぜそのような規則性が発現するのか」ということでしょう。ETCサービスの仕様と関係するのでしょうか?
      親コメント
      • by Anonymous Coward
        100個確保したつもりのリングバッファを99個しか更新して無いとか。。(ぉ
        • by Anonymous Coward
          100から始まらないというのが不思議だな。
        • by Anonymous Coward
          にしては99回目や198回目に発生しないのも謎。
          199回までは別カウンタで回ってる? それも変な仕様だな。
          やっぱ分からんわこれ。部門名みたいに明示的に200+99*n
          とかいう判定条件が実装されてるのかなぁ。
          • Re:規則性 (スコア:2, 興味深い)

            by magrin (17834) on 2004年12月28日 15時13分 (#671793)
            バッファが200個あって履歴として使っている。
            200になると前100個分を保存だかずらすだかして、次に200個使うまでバッファのポインタを前100個目にずらす。
            この時にずらす位置を間違って、ずらした後に読込んだの値がずれる。
            履歴があるのかどうか、ETCを使ってないから分からん。。。。
            親コメント
            • by magrin (17834) on 2004年12月28日 15時22分 (#671799)
              追加:
              次の100回を数えるためのカウンタの初期値だかを間違う。
              それで99回目に再度・・・
              どうだかな
              親コメント
              • Re:規則性 (スコア:4, 興味深い)

                by Anonymous Coward on 2004年12月28日 17時49分 (#671861)
                最低99件の個別利用履歴と、これまでの総合計金額が保存される事、という要求仕様だったと仮定。
                それを実現するために、2つの100回分の履歴領域を持ち、それを交互に利用する。
                100個の領域のうち、最初の一つはバッファが溢れた場合には積算金額を保持する領域として使用。

                rireki1[100];
                rireki2[100];

                として、rireki1[99]まで使えば次にrireki2を使用し、rireki2[99]まで使えばrireki1の0~99を合計してrireki1[0]に入れ、rireki1[1]~rireki1[99]は0クリアする。
                こうしておけば、積算金額を知りたい時には、全バッファ領域200個sumすれば算出できる。
                また、今回利用金額を書き込むべき領域は、現在利用中バッファの金額が0になっている最初の所という条件で知る事ができる。
                この手のカードでは、おそらく永久記憶にはフラッシュを使っているので、カウンタや積算金額などを毎回更新すると、特定の領域の書き換え回数が増えてしまい、寿命を縮めてしまうから、毎回特定領域を更新するような処理は避けているのではないかと予想。

                この予想が正しければ、積算処理が走るのは200, 299, 398・・・となる。
                この積算処理の中で、現在利用金額を保持している領域を破壊するようなバグがあったのかも。
                この手の物はリソースが少ないので、RAM領域を使いまわしてたりする事も多いため、間違えて現在利用金額を保持する領域を使ってしまったとか、PICのようにバンク切替をするようなチップでバンクの切替忘れ(切替間違い)があったか・・・

                そんな感じなのではないかと。

                親コメント
          • by Anonymous Coward
            1. 最初のバッファが200個分。こんだけありゃ寿命の内は足りるだろ的に用意。
            2. 溢れたら100個分追加で確保して繋げる。
            3. 増やせなかったら機器の寿命という事にして有償交換させる。
            4. たっだはずが99個しか追加できてない or 境界判定しくじった

            って、こんな低レベルデバイスで動的確保してるとも考えづらいよなぁ..
    • by Anonymous Coward
      まさにフレームの元
typodupeerror

計算機科学者とは、壊れていないものを修理する人々のことである

読み込み中...