2021/05/06

まれによくある

何を言っているかわからないと思うが以下略

たまにバッチ処理の途中で「アプリケーションエラー0xC0000142」が出てくることがあるのですが、原因が不明でずっと悩んでます。

・たまにしか起こらない 
・基本的には特に何もせずに再実行すると通る
・連続して発生することもある

あたりから何かが足りてないんだろうな、というイメージはあるのですが、 
 
 
という記事を見つけました。
なんとなくこれかも、という気分にはなったのですが、そんなもんが枯渇するとすると、リークしてるんでは?っていう気にもなります。
ということはサイズを大きくするのは発生頻度を下げるだけで根本解決になってないのかも・・・
まぁ、とりあえず試してみますか。

→なんかH/Wが悪い疑惑。
Windowsのメモリチェックでエラーが見つかりました、と言わる「ことがあった」り、Primeをかけると「何度かに1度ぐらい」誤差エラーが出たり。
こういうランダム系なのは原因がわかりにくくていかんですね。
とりあえずBIOSを最新にして、メモリを抜いて差し直して、ひとまずメモリをXMPではなくJEDEC(2066MHz)動作に落としてみました。
・・・電源プランがRyzenBalancedなのがいかんのかもという疑念もあるので、上記で治ったらメモリを戻してプランだけ変更してどうなるかを試してみましょう。 

とかなんとかやってても治らない。
で、はたと自分でmodしたdllにメモリアクセス違反があるということに気が付きました。
いや、もともと作ってるときはわかってたんだけど(コメントにも書いてあるし)もしかしたらこれでは?と思っている今日この頃。これで治らんかな~。
→やっぱり治らなかった
 
とりあえず
https://jpdscore.github.io/blog/debugging/application-error-eventlog/
を参考にWERのファイルを見てみた。
が、0xc0000409以上にわかることがあまりない・・・
FAST_FAIL_FATAL_APP_EXIT
で終了してるようだけど・・・
conhostがバッファオーバーランってなんかウィルスっぽいけど別マシンでも再現するため多分違う 。
batの構造が悪いのだろうか・・・たしかにdelayedexpansionで全体をくくってたりするからとても怪しい。
というのを直してみよう。
→やっぱり治らなかった
 
 
実は単純に自分のスクリプトの一部が悪いんじゃね?という初心に立ち戻っていろいろ試験中。
で、異常終了するコマンドの「2つ」前のコマンドで一瞬で終わるけどthreadsを使ったperlスクリプトの呼び出しがあるんです。
この中で環境変数にアクセス(読み出しだけ)しているので、遅延環境変数と合わせて実はその辺が怪しかったりする?と思ってスクリプトを変更。
→2~3日はうまくいってそう。このまま収まってくれれば・・・
→1週間エラーが出なかったのでこれで治ったことにします。
 
あれこれと惑わされましたが、こんなわけのわからん理由とは・・・
perl含め、スクリプトは正しいにもかかわらず、エラーを吐いたりはかなったりというのは僕がPCに期待する、
「いわれたことを言われたとおりにやる」姿に反していて、理解しがたいものですね。
 

0 件のコメント:

コメントを投稿