パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

大日本印刷のETCカードにバグ」記事へのコメント

  • 規則性 (スコア:0, フレームのもと)

    出光のプレスリリースにきっちり書いてありますが。
    • 編集者がコメントしているのは、「なぜそのような規則性が発現するのか」ということでしょう。ETCサービスの仕様と関係するのでしょうか?
      • by Anonymous Coward
        100個確保したつもりのリングバッファを99個しか更新して無いとか。。(ぉ
        • 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のようにバンク切替をするようなチップでバンクの切替忘れ(切替間違い)があったか・・・

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

                親コメント

アレゲはアレゲ以上のなにものでもなさげ -- アレゲ研究家

処理中...