在公司,不能大张旗鼓的搞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正常了。