在公司,不能大張旗鼓的搞VM+unix,用Cygwin湊合這學慣用。用了一段時間之後,
不知道咋搞的,Cygwin不好用了。arm-elf-gcc編譯去不能正常使用了。make,gcc等等也不正常。執行之後“死”在那裡許久許久,等待了許久才報告出錯誤。
網路上查了許多相關的內容,但都無解。
出錯提示的樣子一般都是這個樣子:(以執行為arm-elf-gcc例子)
Administrator@krsrd217 ~/examples/chapter2
$ arm-elf-gcc -O2 -c helloworld.c
1 [main] arm-elf-gcc 2424 C:\cygwin\usr\leeos\bin\arm-elf-gcc.exe:
***fatal error - WFSO timed out after longjmp
Stack trace:
Frame Function Args
00C7A5F8 6102796B (00C7A5F8, 00000000, 00000000, 00000000)
00C7A8E8 6102796B (6117EC60, 00008000, 00000000, 61180977)
00C7B918 61004F1B (611B5B39, 611B5B7D, 00000000, 00000000)
00C7B938 61067E64 (611B5B7D, 00000001, 00000000, 00000000)
00C7B968 61067EED (00C7B994, 00C7B970, 00000000, 6103020A)
00C7BAE8 61068E94 (00CBD2A8, 00C7BB70, 0000000F, 00000000)
00C7BB08 610C3545 (00CBD308, 00000001, 00CBD2A8, 00CBD198)
00C7BB78 00415D80 (00CBD308, 00000001, 00CBD2A8, 00CBD198)
00C7BBA8 00415FC1 (00CBD308, 00000001, 00CBD2A8, 00CBD198)
00C7BC18 0040673C (00CB8AC8, 00CBD268, 0000000F, 0101F3C0)
00C7BD68 00407CDA (00000000, 0041AF37, 00000001, 00C7BDA4)
00C7BE58 0040908E (00000080, 00000000, 00000000, 00000000)
00C7BFA8 00406FB9 (00000000, 00CBD212, 00000009, 00000005)
00C7C0F8 00407D2E (00000000, 00CBBC07, 0000000C, 00C7C24C)
00C7C1E8 0040908E (00000000, 00040000, 00C7BFF0, 00045A38)
00C7C338 00406FB9 (00000000, 00CBCD1A, 00000007, 00000001)
End of stack trace (more stack frames may be present)
1 [main] arm-elf-gcc 2836 child_copy: linked dll bss write copy failed,
0x675B5000..0x675B51F0, done 0, windows pid 3028, Win32 error 5
311139715 [main] arm-elf-gcc 232 C:\cygwin\usr\leeos\bin\arm-elf-gcc.exe:
*** fatal error - WFSO timed out after longjmp
Stack trace:
Frame Function Args
00C7A5F8 6102796B (00C7A5F8, 00000000, 00000000, 00000000)
00C7A8E8 6102796B (6117EC60, 00008000, 00000000, 61180977)
00C7B918 61004F1B (611B5B39, 611B5B7D, 00000000, 00000000)
00C7B938 61067E64 (611B5B7D, 00000001, 00000000, 00000000)
00C7B968 61067EED (00C7B994, 00C7B970, 00C7BA48, 00C7B950)
00C7BAE8 61068E94 (00000001, 00C7BB70, 0000000F, 00000001)
00C7BB08 610C3545 (00CBD308, 00000001, 00CBD2A8, 00CBD198)
00C7BB78 00415D80 (00CBD308, 00000001, 00CBD2A8, 00CBD198)
00C7BBA8 00415FC1 (00CBD308, 00000001, 00CBD2A8, 00CBD198)
00C7BC18 0040673C (00CB8AC8, 00CBD268, 0000000F, 0101F3C0)
00C7BD68 00407CDA (00000000, 0041AF37, 00000001, 00C7BDA4)
00C7BE58 0040908E (00000080, 00000000, 00000000, 00000000)
00C7BFA8 00406FB9 (00000000, 00CBD212, 00000009, 00000005)
00C7C0F8 00407D2E (00000000, 00CBBC07, 0000000C, 00C7C24C)
00C7C1E8 0040908E (00000000, 00040000, 00C7BFF0, 00045A38)
00C7C338 00406FB9 (00000000, 00CBCD1A, 00000007, 00000001)
End of stack trace (more stack frames may be present)
321140439 [main] arm-elf-gcc 2836 child_copy: linked dll data write copy
failed,
0x6F5C7000..0x6F5C703C, done 0, windows pid 3028, Win32 error 5
633154880 [main] arm-elf-gcc 224 C:\cygwin\usr\leeos\bin\arm-elf-gcc.exe:
*** fatal error - WFSO timed out after longjmp
Stack trace:
Frame Function Args
00C7A5F8 6102796B (00C7A5F8, 00000000, 00000000, 00000000)
00C7A8E8 6102796B (6117EC60, 00008000, 00000000, 61180977)
00C7B918 61004F1B (611B5B39, 611B5B7D, 00000000, 00000000)
00C7B938 61067E64 (611B5B7D, 00000001, 00000000, 00000000)
00C7B968 61067EED (00C7B994, 00C7B970, 00C7BA48, 00C7B950)
00C7BAE8 61068E94 (00000002, 00C7BB70, 0000000F, 00000002)
00C7BB08 610C3545 (00CBD308, 00000001, 00CBD2A8, 00CBD198)
00C7BB78 00415D80 (00CBD308, 00000001, 00CBD2A8, 00CBD198)
00C7BBA8 00415FC1 (00CBD308, 00000001, 00CBD2A8, 00CBD198)
00C7BC18 0040673C (00CB8AC8, 00CBD268, 0000000F, 0101F3C0)
00C7BD68 00407CDA (00000000, 0041AF37, 00000001, 00C7BDA4)
00C7BE58 0040908E (00000080, 00000000, 00000000, 00000000)
00C7BFA8 00406FB9 (00000000, 00CBD212, 00000009, 00000005)
00C7C0F8 00407D2E (00000000, 00CBBC07, 0000000C, 00C7C24C)
00C7C1E8 0040908E (00000000, 00040000, 00C7BFF0, 00045A38)
00C7C338 00406FB9 (00000000, 00CBCD1A, 00000007, 00000001)
End of stack trace (more stack frames may be present)
643155615 [main] arm-elf-gcc 2836 child_copy: linked dll data write copy failed,
0x6F5C7000..0x6F5C703C, done 0, windows pid 3028, Win32 error 5
後偶然用金山衛士發現啟動項目中,有一個服務:
Microsoft .NET Framework NGEN
執行檔案的目錄在這裡:
c:\windows\microsoft.NET\framework\v4.0.30319\mscorsvw.exe
將這個服務清除之後,Cygwin恢複正常!?
問題沒有這麼簡單啊?否也Cygwin有時候還是不正常。異常現象同前。
不斷實驗發現,殺毒軟體停掉,Cygwin有的時候就可以正常使用了。但問題的根源還是沒有找到。
補充:就這些招數都用了,有的時候,Cygwin還是不正常。故障如前,但出現問題的幾率略小了一些。今後還要繼續查問題的根源,一種懷疑是與安裝的MinGW衝突了。
補充:去掉與MinGW衝突測試,問題依舊。另外增加XP的虛擬記憶體的配置也不能解決問題。這一天發現,Gygwin正常了,不停止殺毒軟體和防火牆,也能正常使用arm-elf-gcc編譯器了。回憶做了如下的一下工作,可能是解決問題的線索:清理XP的環境變數,將以往卸載的軟體的、已經無用的環境變數刪除了。最佳化了網路連接。最佳化了XP的顯示。刪除了一些無用的驅動。反正現在Gygwin正常了。