[ トップページ ]
数学・計算・情報学・プログラミング:オペレーティングシステム, 数学・計算・情報学・プログラミング:プログラミングとコンパイラ

Red Hat Linux でなやまされた Perl の pack/unpack のバグ

私のてもとにある Linux PC (会社のと家のとをあわせると 8 台くらいあります) のほとんどには Fedora Core 4 以降の Linux がインストールされています. しかし,いまでも 1 台だけ Red Hat Enterprise Linux の初期の版が動作している PC があります. この PC 上の Perl には私にとって致命的なバグがあり,それに 2 回つかまってしまいました.

Perl によるファイルからの音声 (VoIP) 送信」 や 「Perl による音声 (VoIP) 受信と再生」 で紹介したようなバイナリ通信のプログラムを Perl で書くと,pack(), unpack() という関数を多用することになります. そうすると,しばしばこのバグにとらわれてしまうのです. これらの関数は Perl の数値などとバイナリ・データとのあいだの変換をする関数です. これらにあたえるテンプレート指定文字 (フォーマット文字) としてネットワーク順 (network byte order) の 2 バイトや 4 バイトの整数を意味する“n”, “N” をあたえたときに,上記の Linux にもともとふくまれている Perl 5.8.0 にはうまく処理できないバグがあるようです. Fedora Core をのせた PC には Perl 5.8.1 がはいっていて,そちらでは問題ありません.

やむをえずプログラムをほかの PC にうつして実行するのですが,Red Hat Linux のほうはそのままにしてあったので,バグがあることもわすれていて,ふたたびひっかかってしまいました. この Linux にはほかにもあつかいにくい点がいくつかあったので,今度こそは Fedora にいれかえようとおもいます.

キーワード: リナックス, リヌクス, レッドハット

トラックバック

このエントリーのトラックバックURL:
https://www.kanadas.com/mt/mt-tb.cgi/1742

コメントを投稿

Google でブログを検索:

メインページアーカイブページも見てください.
Creative Commons License
このブログはつぎのライセンスで保護されています. クリエイティブ・コモンズ・ライセンス.
Powered by Movable Type