zmodem での転送中に Application fault
ログを取る処理でしか呼ばれない関数の中で落ちているようですが、ログを取っていますか?
ログを取らなくても同じ結果になりますか?
mctimelocal()内では、static配列が使われていますが(スレッドセーフではない)、複数のスレッドから当該関数が 呼ばれることはないですよね。 あと、配列のアクセス時、範囲チェックしていないのが気になりますが、特にBOFになるような 感じではなさそうです。
接続の時にシリアルポートを選んだのと、設定-端末で漢字を受信と送信の両方ともSJISにした以外は変えていないはずなので、ログはとっていません。 別の方法で転送してしまって、再現環境がなくなってしまったので、これ以上試すのは難しそうです。
他に気になった点としては300KB以上ある大きいファイルだったので、転送に時間がかかっていると問題が起きるのかもしれないと思いました。 ssh で lrzsz の sz に向けて送信して再現しないかと思って試してみたのですが、速すぎるからか、再現しませんでした。
可能であれば、teraterm.iniで、
; ZMODEM log ZmodemLog=on
として、問題を再現させ、そのときに取られる"ZMODEM.LOG"を採取願います。
採取したログを添付しました。
http://ttssh2.sourceforge.jp/manual/ja/setup/teraterm-trans.html の※注に書いてあった「アライドテレシスのルータに対しては、ZmodemDataLen=128 としないと、通信が成功しない場合があります。」に該当していたようで、「ZmodemDataLen=128」の設定で送信は出来るようになりました。
USBシリアル変換ケーブルで接続したシリアルコンソールに zmodem でファイルを転送していると途中で http://twitpic.com/claty1 というダイアログが出てきて終了してしまってファイル転送出来ません。