标题说明了一切;我在cygwin上的ruby安装不再为任何与ruby相关的命令生成任何输出。据我所知,自从我上次使用红宝石以来,我的安装没有做任何事情,而且当我上次使用红宝石时,它肯定能够满负荷运转。我使用基于Ceedling rake的工具进行嵌入式单元测试,它在我之前运行了我的全套测试......
据我所知,它已正确安装:
~ $ ruby -v
~ $ rake test:all
~ $ irb
~ $ gem blah
~ $ which ruby
/usr/bin/ruby
~ $ which rake
/usr/bin/rake
~ $ which gem
/usr/bin/gem
~ $ ls -l /usr/bin/ruby
-rwxr-xr-x 1 wolft01 Domain Users 10259 Jun 27 2016 /usr/bin/ruby
~ $ ls -l /usr/bin/rake
-rwxr-xr-x 1 wolft01 Domain Users 485 May 20 2015 /usr/bin/rake
~ $ ls -l /usr/bin/irb
-rwxr-xr-x 1 wolft01 Domain Users 186 Jun 27 2016 /usr/bin/irb
~ $ cygcheck -c ruby
Cygwin Package Information
Package Version Status
ruby 2.2.5-1 OK
~ $ time ruby -v
real 0m0.868s
user 0m0.015s
sys 0m0.031s
正如您所知,所有与红宝石相关的程序都不会产生任何输出,也不关心它们的参数是什么。可执行文件位于认为它们所在的位置,并且它们都没有被搞砸了一段时间。我已经完成了重启,甚至从cygwin安装程序重新安装了ruby,仍然没有输出。我试图从/ bin中的“真实”位置运行程序,并且没有任何更改(/ bin安装在/ usr / bin)。
尽管我已经使用和配置它,但我对cygwin的内部结构一无所知。这里有什么明显的东西让我失踪吗?我的其他程序都没有这个问题。我想补充一点,当它工作时,ruby在运行任何与宝石有关的事情时非常缓慢。一个rake测试:在我看到输出之前,所有人都需要10秒多。我使用的是i5(联想T450),但即使在我个人的Surfacebook上,也需要一两秒才能真正开始运行。我还没有检查Surfacebook cygwin环境是否存在这个新的ruby问题。
提前感谢您的帮助。
编辑:
不幸的是,我认为我已经找到了这个问题,并且当ruby突然停止工作时,它与时间框架相吻合。我花了一两个小时来运行安装程序,将安装程序更新到最新版本,安装旧版本的ruby,一切都无济于事。我原本没想过要运行一个strace,因为程序中根本没有输出(这看起来像是一个cygwin问题),但想想我可能会尝试以防它实际上做了什么,这就是我发现的:
~ $ strace ruby -v
--- Process 17756 created
--- Process 17756 loaded \Device\HarddiskVolume2\Windows\System32\ntdll.dll at 00000000778F0000
--- Process 17756 loaded \Device\HarddiskVolume2\Windows\System32\kernel32.dll at 00000000777D0000
--- Process 17756 loaded \Device\HarddiskVolume2\Windows\System32\KernelBase.dll at 000007FEFD6A0000
--- Process 17756 loaded \Device\HarddiskVolume2\Windows\System32\tmumh\20019\AddOn\6.80.0.1007\TmUmEvt64.dll at 000007FEFC670000
--- Process 17756 loaded \Device\HarddiskVolume2\Windows\System32\psapi.dll at 0000000077AB0000
--- Process 17756 loaded \Device\HarddiskVolume2\Windows\System32\shlwapi.dll at 000007FEFF270000
--- Process 17756 loaded \Device\HarddiskVolume2\Windows\System32\gdi32.dll at 000007FEFF480000
--- Process 17756 loaded \Device\HarddiskVolume2\Windows\System32\user32.dll at 00000000776D0000
--- Process 17756 loaded \Device\HarddiskVolume2\Windows\System32\lpk.dll at 000007FEFDF90000
--- Process 17756 loaded \Device\HarddiskVolume2\Windows\System32\usp10.dll at 000007FEFDAA0000
--- Process 17756 loaded \Device\HarddiskVolume2\Windows\System32\msvcrt.dll at 000007FEFFB60000
--- Process 17756 loaded \Device\HarddiskVolume2\Windows\System32\advapi32.dll at 000007FEFE120000
--- Process 17756 loaded \Device\HarddiskVolume2\Windows\System32\sechost.dll at 000007FEFF350000
--- Process 17756 loaded \Device\HarddiskVolume2\Windows\System32\rpcrt4.dll at 000007FEFDE60000
--- Process 17756 loaded \Device\HarddiskVolume2\Windows\System32\tmumh\20019\TmMon\1.6.0.1175\tmmon64.dll at 0000000075280000
--- Process 17756 loaded \Device\HarddiskVolume2\cygwin64\bin\cygruby220.dll at 00000003EA660000
--- Process 17756 loaded \Device\HarddiskVolume2\cygwin64\bin\cygcrypt-0.dll at 00000003F8490000
--- Process 17756 loaded \Device\HarddiskVolume2\cygwin64\bin\cygwin1.dll at 0000000180040000
--- Process 17756 loaded \Device\HarddiskVolume2\cygwin64\bin\cyggmp-10.dll at 00000003F5A90000
--- Process 17756 loaded \Device\HarddiskVolume2\cygwin64\bin\cygssp-0.dll at 00000003EA110000
--- Process 17756 loaded \Device\HarddiskVolume2\Windows\System32\imm32.dll at 000007FEFE2D0000
--- Process 17756 loaded \Device\HarddiskVolume2\Windows\System32\msctf.dll at 000007FEFF370000
--- Process 17756 thread 12568 created
--- Process 17756 thread 13660 created
--- Process 17756 thread 7880 created
1 1 [main] ruby (17756) **********************************************
94 95 [main] ruby (17756) Program name: C:\cygwin64\bin\ruby.exe (windows pid 17756)
14 109 [main] ruby (17756) OS version: Windows NT-6.1
10 119 [main] ruby (17756) **********************************************
61 180 [main] ruby (17756) sigprocmask: 0 = sigprocmask (0, 0x0, 0x1802E4BB0)
3273 3453 [main] ruby 17756 open_shared: name shared.5, n 5, shared 0x180030000 (wanted 0x180030000), h 0xD4, *m 6
69 3522 [main] ruby 17756 user_heap_info::init: heap base 0x600000000, heap top 0x600000000, heap size 0x20000000 (536870912)
62 3584 [main] ruby 17756 open_shared: name S-1-5-21-410091219-1949443337-794563710-80728.1, n 1, shared 0x180020000 (wanted 0x180020000), h 0xD0, *m 6
23 3607 [main] ruby 17756 user_info::create: opening user shared for 'S-1-5-21-410091219-1949443337-794563710-80728' at 0x180020000
15 3622 [main] ruby 17756 user_info::create: user shared version AB1FCCE8
423 4045 [main] ruby 17756 fhandler_pipe::create: name \\.\pipe\cygwin-e022582115c10879-17756-sigwait, size 11440, mode PIPE_TYPE_MESSAGE
101 4146 [main] ruby 17756 fhandler_pipe::create: pipe read handle 0xE8
60 4206 [main] ruby 17756 fhandler_pipe::create: CreateFile: name \\.\pipe\cygwin-e022582115c10879-17756-sigwait
46 4252 [main] ruby 17756 fhandler_pipe::create: pipe write handle 0xEC
27 4279 [main] ruby 17756 dll_crt0_0: finished dll_crt0_0 initialization
--- Process 17756 loaded \Device\HarddiskVolume2\Program Files\Avecto\Privilege Guard Client\PGHook.dll at 000007FEFD450000
--- Process 17756 loaded \Device\HarddiskVolume2\Windows\System32\cryptsp.dll at 000007FEFD390000
--- Process 17756 loaded \Device\HarddiskVolume2\Windows\System32\rsaenh.dll at 000007FEFD340000
--- Process 17756 loaded \Device\HarddiskVolume2\Windows\System32\cryptbase.dll at 000007FEFD330000
--- Process 17756 thread 11088 created
--- Process 17756, exception c0000005 at 0000000180127C9A
...
(A crap ton more of the same exception, at least 500 or so)
...
--- Process 17756 thread 20322 exited with status 0xc0000005
--- Process 17756 thread 12568 exited with status 0xc0000005
--- Process 17756 exited with status 0xc0000005
Segmentation fault
正如您所看到的,它加载DLL很好并开始执行Ruby,但随后这个Avecto Privilege Guard客户端的dll和一些与加密相关的dll被加载。这让我觉得这是该公司正在使用的这种新的Avecto安全产品,但我有些疑惑。首先,我可以在vim上运行strace并获得类似的输出,但是vim工作得很好。 Python工作正常,但strace失败(错误创建进程python,(错误2))。
因此,安全系统可能是罪魁祸首,但其方式似乎只会影响Ruby。我知道在Ruby之前使用的任何东西都非常慢,尤其是使用宝石时(大约需要10-20秒来开始rake测试:blah),所以看起来Ruby受安全产品的影响更大。我不熟悉cygwin上有多可靠的strace,所以如果strace中的这些段错误是不寻常的,那将是另一个指向Avecto的手指。
自从我上次使用ruby以来,我们已经开始使用这种Avecto产品以及Bitlocker,所以这些产品中的一种是问题是有意义的。在我能得到某种验证之前,我不会把它作为答案(这将是困难的,因为我不能禁用任何一种产品)。看起来我可能正在迁移到具有某种类型的脱机存储库桥的VM(刚刚找到https://sourceforge.net/projects/camicricube/)。