タイトル通り、仕事の愚痴です。

----

今、10年前に作ったっていうツールの改修をやっているのです。
言語はC。
最近メモリ異常で頻繁に落ちるってことで、その修正とついでに諸々の改修の依頼が来たってところ。
とりあえず、異常終了問題を最優先で直せとの仰せ。

当時の開発環境は時代遅れ、OSもコンパイラもツールも既にサポートが終了していて、同じ環境を普通に用意することは不可能なわけ。
まぁ開発環境は(略)でなんとか用意できたわけですが。

開発環境が整うまでVCあたりで仮組みしてたんだが、
Warningはでまくりの、ぱっと見で判るくらいにメモリ解放漏れありの、
signedとunsignedが混在してたりーの、etc...

それが開発環境だとWarningのwもでやしないからちょっととびっくり。
オプションで消してるようでもなく、オプションを追加してもでないから、
単純にコンパイラが古くてそんなにチェックしていないのかなと思ってみたり。

まぁ、そんなのはいいんだけど。

とにかくデバッガとか用意してログとか仕込みながら解析を始めたのですよ。
で、もうわかんね。
ループする処理があったんで、そこの回数を出力するようなログを仕込んでみたら、、、
仕込んだprintfで落ちてたり
リダイレクトでファイルにログを出力したら5600回
コンソールに出力するように変えると6000回
最初に1回だけ表示するprintf入れたら6200回
それぞれ同じやりかただと現象は固定。
並列で2つ同時に実行させても個々の現象に影響は無し。

同じデータでやって、落ちる場所(回数)が変わってるので、データに起因するわけではないし。
並列で動かしても単体のときの動作に影響無いから、システムとしてのメモリ枯渇ではなさそうだし。
つーか、ログ出力方法の違いだけで処理の進度が変わるって意味ワカンネ。
(ファイルに吐き出してるから、落ちてる時点のログまで出力されきってない?)
まぁ、処理に関係ないprintf追加したら回数増えたってのも意味フだし。
ただ、実行時の環境が一緒なら結果も一緒なので、何らかの固定的な原因な気はするんですけどね。。。

客先からはなるべく影響少ないように改良は最小限にって言われてるし。
正直、判ってるメモリ解放漏れとか細かいWaningとか消してくくらいしか
今のところ思いつかないよーーー
(メモリ解放漏れは終了処理のところで起きてるので、異常終了とは直接関係ない)

あーもう、このキッタネーソース見るのやだー
許されるなら全部作り直したくなってきた。
許されないし、規模もでかいから無理だけど。
てか裏で新統合ツールの製作プロジェクトも動いてるようで、
このツール自体の寿命は短いってことらしいですが。
(今回の件は次期ツール受注の試金石らしいですけどね)

とりあえず、明日休もう。

コメント

最新の日記 一覧

<<  2025年5月  >>
27282930123
45678910
11121314151617
18192021222324
25262728293031

お気に入り日記の更新

この日記について

日記内を検索