#Windowsのコマンドプロンプトからgosh軌道してみたらさらに謎なことに。別のwindowsコンソール窓が開き、そこにgosh>プロンプトがでる。そこで(exit)するとコンソール窓が消え、元のコンソールの方にまた gosh> プロンプトがでる。どうなってるんだ?
#別のwindowsコンソール窓は特に何もしないでも一定時間後に消え、元のコンソールの方にgosh>が来ることもわかった。ますます謎である。
#rxvt から起動してますか?
#rxvt.exe は CUI アプリなのに一旦起動してからコンソールウィンドウを消してるみたいなんですよね。
#あ、コマンドプロンプトでも問題がおこるのか。 なんなんだろう…。
#ちなみに私の手元では再現しません。 (Windows7 32bit版)
#MinGWはいつのバージョンを入れてますか? わりと最近mingw-getした覚えがあるんだけど多分それ以来だなあ。
#私もつい最近なんですが、とりあえず今の最新の MinGW を入れて試してみます。
#むー、さらに今の状態でHEADをコンパイルしてWindows cmd.exeから実行しようとするとlibgcc_s_dw2-1.dllが無いと言われるなあ。C++なんか使ってないはずだが… (そして奇妙なことに、別コンソール窓がひらく→「dllが無いよ」→「gosh.exe stopped working」→別コンソール窓が閉じる→「dllが無いよ」→「gosh.exe stopped working」、となる。まるでgoshが2回実行されてるみたいだ)
#あ、ちなみにうちの環境はVista 32bitです。
#Windows8の環境もあるからやってみるか。MinGW入れるところからやらんとな。
#やはり再現しませんでした。
#mingwのアップデートで何かおかしなことになったかな。一回消して入れ直してみるか。
#あ、ちなみにmsysでビルドしたgoshをcmd.exeから起動してもchanto
#動きます? (libgcc_s_dw2-1.dllが無いよ、とは言われない?)
#はい。 特にそういうエラーは出ないですし、デバッガで見た感じでは直接的にも間接的にも libgcc_s_dw2-1.dll に依存している様子はないです。
#ですよねー。リンク時に-static-libccつけてもこのエラーが出るんで、なんか思いがけないところが壊れてる気が。
#r
#gdbで起動してmainにブレークポイントかけてrunすると、windows consoleが開く→しばらく待ってると閉じる→ここでbreak。mainの前に何かが実行されてる。c++のランタイムがどういうわけか混じっててstatic constructorから変なものが呼ばれてるとかそういうことだろうか。
#ひぇぇ。__mainとか__mingw_CRTStartupとかにブレークポイントかけてみるも、「余分なwindows consoleのオープンと、その中でのgosh REPL動作」はそれらに到達する前に起きる。Scm_Initにブレークポイントかけても同様。余分なコンソール中でのgosh REPLは誰が実行してるんだ?
#gosh の外 (シェル?) が狂ってる可能性もあるのでは。
#変なエイリアスとかパスとか。
#でもコマンドプロンプトから直接起動しておかしなことになってるんだからそういうのとも違うかな。
#環境の方がおかしいのだと思うんですが、とりあえず2回実行されてるREPLは今ビルドしたREPLであることに相違なく(printfスタブを入れればちゃんと両方に出る)、gdb goshで走らせても余分なコンソールが出ることから、シェルの中で複数回goshが呼ばれるとかそういうのではなさそう。
#avast! antivirusを切ったら謎動作が止まった。これか。
#ええーっ! どんな干渉があればそんなことが起こりえるんだろう
#素性が明らかでないバイナリをsandboxで実行する、という機能があるみたいなんで、CreateProcessあたりをフックしてるのかな。
#一回コンソール開いて数秒後に消えて再実行、というのは、sandboxで実行してみる→特に怪しいことはない→そっちをkillして普通に実行、とやってるのだろうか。インタラクティブなウィンドウアプリなら多少起動が遅くなったり一瞬余分なウィンドウが見えたりするくらいでいいのかもしれないが、コマンド系でそれをやられると大変迷惑だな。
#ああ、silent modeにしてたんだけど、それを切ってみたらavastがダイアログ出してた。
#libgcc_s_dw2の問題はまだ出るな。libgaucheのビルドの方に-static-libgccをつけたら出なくなったけど、そもそもなぜ必要なのか調べないと…
#-static-libgccをつけてリンクしたやつは、mingw shellでのmake -s checkでいくつか変なこけかたをする (「This application has requested the Runtime to terminate it in an unusual way.」) つけなければ全部通る。