amate / InputPipePlugin

L-SMASH_Works File Reader(lwinput.aui)を別プロセスで実行してあげることによって aviutlのメモリ使用量削減を目論む、aviutlの入力プラグインです
Other
130 stars 1 forks source link

InputPipePlugin.aui+0x27223でコケる #3

Closed ePi5131 closed 2 years ago

ePi5131 commented 2 years ago

code : EXCEPTION_ACCESS_VIOLATION (0xc0000005) address : 0x70cc7223 (InputPipePlugin.aui + 0x00027223) func_name: INPUT_PLUGIN_TABLE::func_close() read/write : 0 accessed address : 0x00000000

これ以上の詳細はよくわかりませんが、そこそこの数見ます ヌルポ参照ですが心当たりはありますか? InputPipePluginの優先度を下げる(=使わないようにする)ことで回避することはできました

資料 https://twitter.com/xAlvthia/status/1508193113990303748

amate commented 2 years ago

内部のデータ交換方式を共有メモリにすれば落ちなくなるってどっかで見ました そもそも、自分の環境では再現しないのでよくわからない aviutlが落ちるなら[プロセス間通信を有効にする]のチェック外せって書いてるけど誰もreadme読まないからしょうがないね・・・

ePi5131 commented 2 years ago

例外が出ることを落ちると言わないでほしいです 本当に落ちるときは何も言わずに終了するので (それこそlwinput.auiが同じディレクトリにないやつとか) てっきりこの文脈だと思って今回は読み飛ばしてしまいました 試させておきます

再現方法はよくわからないですね こちらも出したことが無いものなので ですがそこそこの数を見かけるので、何かしらやり方があるのでしょう

amate commented 2 years ago

lwinput.auiが同じディレクトリになくてもaviutlは落ちませんよ?

INPUT_HANDLE func_open( LPSTR file )
{
    INFO_LOG << L"func_open: " << CodeConvert::UTF16fromShiftJIS(file);

    if (g_hWinputDll == NULL) {
        return nullptr;
    }

dllがなければ単にnullptrを返すだけなので落ちようがないです

ePi5131 commented 2 years ago

あれ、昔これを確認させて直ったのを見たのはなんだったんだ...?まあ今は非本質なのでいいです

過去の事例を調べてきたところ、インターレースな動画を扱うときにこの例外になっていたことがあるようです このときには InputPipePlugin.aui+0x00026281 でもコケることがあったようです さらにこれはL-SMASH Works側(もっと言うとFFmpeg側?)の問題であったようです L-SMASH Worksに読ませると何も言わずに落ちてしまいます(rev1077 lwinput.aui+0x748906)

ただ今回はL-SMASH Worksに読ませても落ちなかったので、別の原因か、似てはいるが何かが異なる原因ではないかと推測します