スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

謎のバグ

PHPでカタカタソースを組んでいたわけです。
「特定のセッション変数を持っていないアクセスはTOPページへ飛ばすリンクを表示する」
という処理をそのソースの一番てっぺんで入れていました。
文字表示後exit()という関数で処理を終了させているので、
エラーメッセージを表示したらその行以下は処理されない。
という目論見です。

その下の方ではデータベースへのデータ登録なぞをしとるわけですが、
ある時バグで「特定のセッション変数を持っているアクセスは…」
と条件が逆になっていました。

つまり、そのバグが活きている間は、某かのデータをつっこんでも、
セッション変数を持っているとデータベースには登録されない…
となるはずでした。
はずだったのです。

バグを直してから処理を呼び出してみると、
既にそのデータは登録されている…というエラーメッセージが…
「はて?そんなデータを入れた覚えはついぞないわけですが…」
と訝しがりながらデータベースの中身を覗いてみると…

先ほどのバグが活きていた時に弾かれたはずのデータが…
why?何故?
確かに、画面には異常なアクセスだからTOPページに戻るという
メッセージが表示されていた。
つまり、exit()は呼ばれていた… はず。

実は、以前も似たような事がありました。
プログラムではよく、どのような言語でもif文というものがあります。
これは「特定の条件に合致した場合何々をしろ、そうでなかったらこれこれをしろ」という条件にしたがって処理を分ける時に使用するのですが、
ある時、条件が成立した場合としなかった場合の両方の処理が実行されてしまう…
という怪現象に遭遇しました。
もう、バグとかそういう問題ではありません。
ある意味、これを信じなかったら何を信じればいいんだ?
というレベルの基本法則に裏切られてしまったので、頭は大混乱です。
if文の書式を調べ、念のため同僚に確認してもらい、
異常な挙動を同僚の前で実演して2人して頭の上に?マークを出す始末。

C/C++等のコンパイル言語ではそういう事はありません。
少なくとも今まで一度も遭遇した事はありません。
おそらくスクリプト言語だから起きてしまった異常事態だとは思いますが、
自分の与り知らぬ所でそういった異常事態を引き起こされると
何が悪いかが予想が立てられないので、回避手段も想像つきません。

今回もそんなレベルの異常事態。
提供する側が決して裏切ってはいけない部分で裏切られた形です。
しかし、そうはいってもバグ?というか異常動作なので直さねばいけないわけで…
どうしよ…これ…
妖しいといったら…smarty辺りかなぁ…?
手探りにしろどこから手を付ければよいのやら…。
スポンサーサイト
プロフィール

神琳楓雅

Author:神琳楓雅
FC2ブログへようこそ!

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。