その1:
1 プログラムの不具合報告。Red Hat 5.4で正常に動作するが、Red Hat 6.1では正しく動作しない。
2 プログラム調査の結果、strcpy関数でコピー元とコピー先が一部重なっていた。
  strcpy()の仕様では、コピー元とコピー先が重なっているときの挙動は未定義であり、プログラムのバグであると判明。
  しかしRed Hat 5.xでは、コピー元とコピー先が重なっていても動くよう実装されている。
  Red Hat 6.1でglibcが変更され、strcpyは仕様通りの動きをするようになった。
3 環境調査の結果、Red Hat 6.3以降はプログラムが正常に動くことが判明。
  どうやら6.1での変更が相当不評だったようで、5.xの実装に戻ったようだw
https://access.redhat.com/knowledge/docs/en-US/Red_Hat_Enterprise_Linux/6/html/6.3_Technical_Notes/glibc.html
https://access.redhat.com/knowledge/docs/en-US/Red_Hat_Enterprise_Linux/6/html/6.4_Technical_Notes/glibc.html

4 プログラム修正に当たり、バグ票を起票。そのときに不具合詳細を記載するため、もう一度不具合発生を試みるが、発生しない。
5 もう一度環境調査した結果、Red Hat 6.1でもIntel-CPUとAMD-CPUで挙動が異なると判明。
6 /(^0^)\

その2:
1 DB(MySQL)からデータを取得するプログラムが、Red Hat5.2とRed Hat6.2で挙動が違うと報告あり。
2 プログラム調査の結果、SQLGetData()でカラムのデータを取った後、カラムのデータサイズの大きさでmallocする箇所でコケることがあると判明。
3 SQLGetData実行のとき、SQLLEN型の変数(OSが64bitなのでサイズは8バイト)にデータのサイズがセットされる。カラムの値がNULLのときは-1がセットされるはずだが、8バイトの0xFFFFFFFFFFFFFFFFではなく4バイトの0xFFFFFFFFがセットされる。そのためNULL(-1)と判定するロジックで誤判断する。
4 ODBCドライバはMyODBC 3.51.28(64bit)以前だとこのバグが発生すると判明。
5 Red Hat5.xとMyODBC 5.1.8(64bit)RHEL5版の組合せもピンポイントでこのバグが発生すると判明。MyODBCのバージョンが1つでもずれると発生しない。
6 /(^0^)\

コメント

最新の日記 一覧

<<  2025年6月  >>
1234567
891011121314
15161718192021
22232425262728
293012345

お気に入り日記の更新

この日記について

日記内を検索