kqtrain.net(京浜急行)

京浜急行を中心に「これは!」というモノを取り上げるblog

2007年10月28日(日)

首都圏改札機トラブル、原因は2バイト分のデータ処理ミス [ニュース(鉄道)]

 asahi.com:1文字分のミスで大トラブルに 首都圏改札機トラブル - 社会

 2007年10月12日と10月18日に発生した首都圏改札機トラブル
 (東京新聞:改札ダウン プログラムミス原因 日本信号製 約260万人影響:社会(TOKYO Web) 2007年10月12日
 (日本信号製の乗車券処理機、65駅でまたトラブル : 社会 : YOMIURI ONLINE(読売新聞) 2007年10月18日
ですが、その原因は、わずか2バイト分のデータの処理に関してでした。

 改札機や窓口処理機には、期限切れなどの理由で使えなくなったカードをチェックするための無効カード情報(ネガデータ)を機器内に記憶していて、毎朝の電源ONの際に最新データに更新しています。
 これらのデータは、まず相互利用センターのサーバーから各駅の駅サーバーへ送信、駅サーバーはデータ処理に必要な情報を加えた上で、改札機や窓口処理機に送信します。
 改札機や窓口処理機は毎朝の立ち上げの際、ネガデータの最新版を取り込むようになっており、窓口処理機は駅サーバーから直接データを受け取りますが、改札機は監視盤という機器で書き換えられたデータを受け取るようになっています。

 このネガデータに何も問題がない場合は、通常通り処理できるのですが、ネガデータに「ある長さ、ある件数」といった条件が重なった時、データが読み込めなくなるプログラム不具合が判定部側にあることが判明。
 この不具合の引き金になったのが、2バイト(2進法で16けた)のデータでした。
 例えば改札機の場合、ネガデータは5451件分(65,518バイト)を一区切りとして処理されるのですが、データ処理については4バイトずつ進めるため、最後に2バイト余る計算になります。

  • 5451(件)x4(バイト)=65,516(バイト)
  • 65,518(バイト)-65,516(バイト)=2(バイト)

 半端な2バイトも、件数がこの一区切りまでなら正常に処理されていましたが、5452件以上になると「85件増すごとに5件の割合で、余った2バイトの処理を忘れる」というプログラムの欠陥があった結果、12日に送信されたデータにエラーがあると判定した改札機の処理プログラムは、エラーを返しながらネガデータ読み込みのリトライをひたすら繰り返す状態に陥り、起動処理が出来ず改札機がダウンしてしまったとのことです。
 窓口処理機でも同様の処理が行われていたのですが、データの受け取り方の違いから12日の時点では障害は発生しませんでしたが、18日には「5件」の条件に当てはまったことから、ダウンしてしまったとのことです。

 ネガデータはPASMOとSuicaの相互接続が始まった3月18日以降に追加されたデータで、相互接続時にネガデータに対応するためにプログラムも変更していたとのことですが、更新までに1年ほどあったというテスト期間でもこの不具合は見つけられず、運用開始から半年以上、本番環境で判明するという最悪の事態になってしまったわけです。

 それにしても、ネガデータのデータが何故2バイト余るようになってしまったのでしょうか?
 通常は1件の情報をどのくらいのデータにするのかを決め、そこから総データ数を計算しておき、そこからエラー判定の条件を割り出しておくと思うのですが・・・。

 260万人の朝の足を直撃 プログラムに潜んだ“魔物” - ITmedia News

asahi.com:1文字分のミスで大トラブルに 首都圏改札機トラブル - 社会

 首都圏の鉄道で12日と18日の早朝に起きた日本信号(本社・東京)製の自動改札機と窓口処理機の障害の原因は、プログラムがわずか日本語1文字分のデータの処理を誤ったためだったことがわかった。「極めて単純なプログラムミス」と専門家が指摘する欠陥は、のべ727駅、260万人の足に影響する事態に発展した。

 12日は改札機4378台、18日は窓口処理機101台で障害が起きた。どちらの機器も、IC乗車券「Suica(スイカ)」と「PASMO(パスモ)」の相互利用に対応している。

 日本信号によると、期限切れなどの理由で使えなくなったカードをチェックするため、無効カードの情報(ネガデータ)が相互利用センターのサーバーから各駅の駅サーバーに送られてくる。駅サーバーはデータ処理に必要な情報を加えて、改札機や窓口処理機にネガデータの情報を送る。

 両機器は毎朝の立ち上げの際、ネガデータの最新版を取り込む。その際、窓口処理機は駅サーバーから直接データを受け取るが、改札機は監視盤という機器で書き換えられたデータを受け取る。

 障害の引き金になったのが、2バイト(2進法で16けた)のデータだった。例えば改札機の場合、ネガデータは5451件分(6万5518バイト)を一区切りとして処理される。処理は4バイトずつ進めるため、最後に2バイト余る。全角ひらがなや漢字1文字分のデータ量だ。

 半端な2バイトも、件数がこの一区切りまでなら正常に処理されていた。だが、5452件以上になると「85件増すごとに5件の割合で、余った2バイトの処理を忘れる」(同社)というプログラムの欠陥があった。

 相互利用が始まった3月から9月下旬まで、ネガデータは障害が発生する件数に達していなかった。以後もたまたま障害の条件をすり抜けていたが、10月12日のデータは「5件」に合致して2バイトが欠落し、改札機が立ち上がらなくなった。

 窓口処理機でも同様の処理が行われているが、データの受け取り方の違いから12日に障害は起きなかった。だが、18日には「5件」の条件に当てはまった。

 今回の事態を受けて日本信号では、すべての機器のプログラムの見直し作業を進めている。

Posted by kqtrain at 20時21分   トラックバック ( 0 )

トラックバック

トラックバックURL

http://www.kqtrain.net/a-blog/tb.php?ID=1381

Today
Yesterday
Total
Top コラム?(リンクなし)
資料室 Topics
Gallery RouteMap
Profile Link
e-mail about

カテゴリーリスト

最近のトラックバック

リンク集

検索

プロフィール

ひろっぴ@かんりにん

ひろっぴ@かんりにん

元の趣旨とはかけ離れたblog(苦笑)

カレンダー

10

2007


  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      
インターネットができるルーム検索

RSS1.0 RSS2.0

powered by a-blog login

Copyright (C) 2009 kqtrain.net(京浜急行) All rights reserved.