迁移到 Windows 7 x64,我在此环境中运行 Cygwin 时遇到问题。看起来原因是 Windows 7 的 ASLR 功能。它会导致各种 DLL 加载到虚拟内存中的不同地址,并且当生成子进程时,Cygwin 似乎希望父进程和子进程中的相同 DLL 具有相同的基地址。显然有一个特定的检查,并显示以下消息:
5816 [main] perl 4148 C:\Cygwin\bin\perl.exe: *** fatal error - unable to remap C:\Cygwin\lib\perl5\5.10\i686-Cygwin\auto\Data\Dumper\Dumper.dll to same address as parent(0x9A0000) != 0xB40000
Run Code Online (Sandbox Code Playgroud)
我尝试通过将 HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\MoveImages: DWORD 设置为 0 来关闭 ASLR,但它似乎没有做任何事情:DLL 仍然加载到随机位置(通过上述验证消息并使用 Process Explorer 查看两个进程的地址空间)
与此同时,我计划使用 XP Mode 来运行 Cygwin,这似乎有点人为并造成了一些限制。
有人知道在 Windows 7 x64 下直接运行 Cygwin 的方法吗?
| 归档时间: |
|
| 查看次数: |
12750 次 |
| 最近记录: |