あきらめてここで打ち切るか,何か対策を考えるか?それが問題だ

なんとかメモリ不足の問題を解決して,CollatzTest 4000.ADLの極小反例サンプル抽出を行っているところだが,一晩走らせても,まだ80点しか削減されていない.全体で12243点もあるので,これでは焼け石に水だ.現行では,子どものいないノードだけを対象に削除テストを実行しているので,一度に1点しか削減できない.この「一度」というのに途方もない時間が掛かっている.あきらめてここで打ち切るか,何か対策を考えるか?それが問題だ.

▲単身婚ではCheckAtypicalMarriageでやることは何もないのではないか?また,結婚枠の順序が変わらない限り,Gringのリロードは不要なのではないか?⇒CheckAtypicalMarriageを実行しないと,NAMEBOX::DrawFooterLineでエラーで停止する.この関数では脚下垂線を描画しているが,下部垂線の長さを決めるパラメータが計算されていない.Gringのロードは一度だけ実行すればよいはずだが,GringChangedの中で実行しているcancelstackは必須のようだ.この辺りは後日見直すことにする.

▲12146点の「極小反例サンプル.ZEL」をデバッグモードでロード→ 「極小反例サンプル」を実行スタックオーバーフローが起きた.ResetAbsoluteで起きている.

image

この障害は前にも発生している(2022-04-28).原因は描画リストで世代枠が長いチェーンになっていること,系列世代枠が描画リストを長いものにしているという2点だ.ここでは,始系列を系図木オブエクトの左枝に接続するという修正を行っている(いたはずだ).⇒いや,暫定的にResetAbsoluteで世代枠を無視するということしかやっていない.⇒ダメだ.再実行しようとして,また,「アプリケーションはブレークモードになっています」が起きてしまった.EEFileLoadException (メモリの場所 0x00AF8DBC)というのが発生している.この障害はメモリ不足に関係しているように思われるが,よく分からない.起動して,まだ何も実行していない時点で起きているので,手も足も出ない.

image

2日前の版に戻って見たが,動作は変わらない.訳が分からないので,とりあえず,VS2017を修復インストールしてみる.⇒状況は同じだ.直近の3つの版を試してみたが,「ブレークモード」だ.2022-04-12まで戻ってようやく動いた.2022-04-30版では以下のメッセージが出た.

image

メモリリソースが足りないとなっている.この版ではコマンドラインでCollatz3950-10934.ADLを起動している.しかし,コマンドライン引数なしで起動しても,「ブレークモード」で停止する.4月29日に同じような事象があり,このときも「メモリリソースが足りません」となっていた,リリースモードでは立ち上がる→ テーブルサイズを縮小→ より小さいサンプルを作成,のように対処している.1月9日にも同種の事象があり,「ターゲットをAnyCPUからWin32に切り替えて動作するようになった」と記録している.この時期にはWindows 10とWindows 7の2つの環境を併用している.⇒確かに,これが当たりのようだ.

ここで「ターゲット」と言っているのは,ツールバーの「ソリューションプラットフォーム」と呼ばれる項目だ.VBのプロパティ→ コンパイル→ ターゲットCPUは「x86」,DLLのプロパティ→ ターゲットプロパティは「Windows 10」に固定されている.OCX,GCも同様だ.構成マネージャではVBのプラットフォームは「Any CPU」に固定で,それ以外は「Win32」に固定されている.

とんだ時間の無駄遣いをしてしまった.⇒仕掛りの最新版に戻って起動することはできたが,SetRowValue←BuildNewTableでoutOfMemoryExceptionが出てしまった.このサンプルは今まで動いていたはずなのだが…カスペルスキーの完全スキャンを実行していることが影響しているだろうか?カードテーブル情報をテキスト配列にコピーするようにしているので,確かに以前よりはメモリを余分に使うようにはなっていると思うが…⇒極小反例サンプルで参照しているのはカードの参照番号だけなので,その部分だけ格納するようにすれば大幅に削減できる.あるいは,このテキスト配列を作らないで,極小反例サンプルでGCから直接レコードを取り出すようにしてもよいのではないか?⇒とりあえず,前者の方法を試してみよう.

そもそも,バージョンが戻ってしまっている.というか,最終版がバックアップされていない.最終バックアップは2022-05-01-2で,これには2022/05/01のログの修正のすべては反映されていない.「BUNSFILEのバッファは常設とする@20220430」は入っているが,UNDOの修正は入っていないように思われる.ここからやり直すしかない.一度仮眠してデバッグを再開するときには,必ずバックアップを取るようにしないと失敗する…

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA