TeraTermProject / teraterm

Other
392 stars 33 forks source link

ACCESS VIOLATIONが必ず発生する #191

Closed sakuramocchi closed 3 months ago

sakuramocchi commented 3 months ago

Windows11 Pro 23H2 Teraterm 5.2ポータブル、Teraterm4.08ポータブルどちらも必ず発生。

ttpmacro.exe /V マクロファイルで呼び出し。 マクロファイル内では、connect host:22 /V /timeout=10 /ssh /2 /auth=publickey /user=hoge /keyfile=hogehoge

で実行すると、TeraTerm Application Faultのポップアップが表示され、Exception ACCESS VIOLATIONと表示されています。 実際には、もっと細かい内容が記載されています。 100%再現しています。

マクロファイル内のconnect host:22 /Vの/Vを外し、ttpmacro.exe /V マクロファイルでは再現しませんが マクロファイル内のconnect host:22 /Vは外さず、ttpmacro.exe マクロファイルにすると再現します。

タスクスケジューラでサインインせずに実行したいので、どちらも/Vオプション付けないいけないと思っています。

また、ポップアップが表示されたときには、Windowsのイベントログ(Application)に、イベントID:1000のApplicationエラーが出力されています。

回避方法があれば、教えていただけると助かります。

zmatsuo commented 3 months ago

レポートありがとうございます。 手もとで再現しました。 取り急ぎ修正しました。

試していただけますか? https://ci.appveyor.com/project/teraterm/github-snapshot/builds/49530382/artifacts

sakuramocchi commented 3 months ago

早速のご対応ありがとうございます。 後ほど、結果連絡させていただきます。

sakuramocchi commented 3 months ago

実行確認しました。 ACCESS VIOLATIONについては、解消いたしました。 ありがとうございました。

その後、タスクスケジューラに登録して、実行したところ 以下の不具合が発生(不具合と言って良いのかわかりませんが)

タスクスケジューラのセキュリティオプションで 「ユーザーがログオンしているときのみ実行する」では、問題なく正常終了しますが 「ユーザーがログオンしているかどうかにかかわらず実行する」では、実行中のままになります。 最上位の特権で実行するにチェックを入れても状況は変わりません。

batファイル内からttpmacoを呼び出す場合とttpmacroを起動する場合とどちらも実行中のままになります。 ttpmacroを起動する場合は、タスクスケジューラで見ると、Tera Term Macro Interpreter(32bit)だけが動いています。

何か、回避方法があれば教えていただけないでしょうか。

よろしくお願いします。

zmatsuo commented 3 months ago

ACCESS VIOLATIONについては、解消いたしました。

😀

ユーザーがログオンしていないとき、というのは デスクトップが存在しないのでしょうか。 GUIがあるプログラムはどうなるのでしょう? Tera Term以外の他のプログラムは動作しますか?

sakuramocchi commented 3 months ago

ここに、記載があったので、動かせると思いましたが、 (https://ja.osdn.net/projects/ttssh2/ticket/31877) 確かに、GUIがあるものはどうなってしまうのか、私にもわかりません。 ググってみた結果から考えると、その他のGUIでは動かないと思います。 やはり、無理なんでしょうね。

zmatsuo commented 3 months ago

OSDN の ticket はエラーで見ることができませんでした。

やはり、無理なんでしょうね。

/I オプションの説明みるとできそう? Windowsの動作がなにかかわったのかな?

取り急ぎ修正を整えて、マージしたら とりあえずこのissueは解決にしようかなと思います。

zmatsuo commented 3 months ago

mainへマージしました。

ACCESS VIOLATIONが必ず発生するのは修正できました。 ありがとうございました。

バイナリを作成しました。ご利用ください。 https://ci.appveyor.com/project/teraterm/github-main/builds/49547663/artifacts

たしかに ticket #31877 をみるとできそうな印象ですね。 https://ja.osdn.net/projects/ttssh2/ticket/31877 /I オプションを試してもらえないでしょうか https://teratermproject.github.io/manual/5/ja/commandline/teraterm.html#i

sakuramocchi commented 3 months ago

色々とありがとうございました。 /Iオプションやインストール版等、試してみましたが どれもうまく動きませんでした。 Windowsの仕様変更が関係しているのではないかと思います。

バグについては、解決しておりますので、クローズしていただけばと思います。

sakuramocchi commented 3 months ago

タスクスケジューラで動く場合がありました。 teratermの接続先が落ちている場合は、teratermがタイムアウトで落ちるので、完了しました。 ですが、teratermの接続先が接続できる場合は、ダメなようです。 「ユーザーがログオンしているかどうかにかかわらず実行する」にチェックを入れ 「最上位の特権で実行する」をチェック 「表示しない」をチェック 構成は、「Windows7.Windows Server 2008 R2」

バッチファイルでは、 ttpmacro.exe" /I /V マクロファイルで実行 マクロファイルの中では、host:22 /V /I /timeout=10 /ssh /2 /auth=publickey /user=hoge /keyfile=hogehoge

これで、バッチファイルの最後まで実行できました。 オプションの指定が、正しいかどうかがよく分からないですが 何パターンか試してみます。

色々とありがとうございました。

zmatsuo commented 3 months ago

調査いただきありがとうございます。

どこかの時点でWindowsの仕様が変わっって、 それに Tera Term のドキュメントが 追い付いていないのかもしれないですね。

このissueはクローズします。 ありがとうございました。