为什么我无法修复 cygwin1.dll 不匹配问题?
Why can't I fix the cygwin1.dll mismatch issue?
我正在尝试执行一个 .sh 脚本(不是我写的),但出现以下错误:
0 [main] echo (5320) C:\Program Files\Git\usr\bin\echo.exe: *** fatal error - cygheap base mismatch detected - 0x180343408/0x180317408.
This problem is probably due to using incompatible versions of the cygwin DLL.
Search for cygwin1.dll using the Windows Start->Find/Search facility
and delete all but the most recent version. The most recent version should
reside in x:\cygwin\bin, where 'x' is the drive on which you have
installed the cygwin distribution. Rebooting is also suggested if you
are unable to find another cygwin DLL.
我尝试按照错误中的说明进行操作,但我只有一个 cygwin1.dll 文件。
所以我尝试在 git bash shell 中执行以下命令:
/c/cygwin/bin/man
我得到:
0 [main] man (11952) C:\cygwin\bin\man.exe: *** fatal error - cygheap
base mismatch detected - 0x180317408/0x180343408. This problem is
probably due to using incompatible versions of the cygwin DLL. Search
for cygwin1.dll using the Windows Start->Find/Search facility and
delete all but the most recent version. The most recent version
should reside in x:\cygwin\bin, where 'x' is the drive on which you have installed the cygwin distribution. Rebooting is also suggested
我已经尝试在漏洞利用保护面板中禁用 ASRL 选项(如某人所建议的那样)并重新启动,但这并没有解决问题。
如果我写
which -a cygwin1.dll
我得到:
/c/cygwin/bin/cygwin1.dll
/c/cygwin/bin/cygwin1.dll
看起来我有两个cygwin1.dll但实际上我只有一个..
几天以来我一直在寻找可能的解决方案,但似乎对我没有任何帮助。
有什么建议吗?
虽然错误消息提到 cygwin1.dll
,但它具有误导性,因为 Git for Windows
使用 MSYS
并且文件已重命名 msys-2.0.dll
不幸的是,MSYS 团队在导入和修改 Cygwin
源时忘记更改错误消息:
- 在您的计算机上找到所有
msys-2.0.dll
并为它们添加后缀 .bkp
。
- 无论您在哪里找到它们,请将
"C:\Program Files\Git\usr\bin\msys-2.0.dll"
复制到这些位置。
备注:
- 如果您要从
C:\msys64\usr\bin\msys-2.0.dll
复制到所有其他位置,那么您会丢失末尾显示您所在分支的漂亮的附加文本 (master)
- 如果您只是决定删除所有额外的 dll 并仅将
C:\msys64\usr\bin
添加到您的路径,则必须存在它查找的相对于其通常所在目录的依赖项。
- 因为显然我浏览了所选答案并错过了关于
msys-2.0.dll
的部分,所以我必须自己解决这个问题。备查:
- 运行
listdlls -r -v -d msys-2.0.dll
- 检查基础、路径和版本信息是否存在差异。
我正在尝试执行一个 .sh 脚本(不是我写的),但出现以下错误:
0 [main] echo (5320) C:\Program Files\Git\usr\bin\echo.exe: *** fatal error - cygheap base mismatch detected - 0x180343408/0x180317408. This problem is probably due to using incompatible versions of the cygwin DLL. Search for cygwin1.dll using the Windows Start->Find/Search facility and delete all but the most recent version. The most recent version should reside in x:\cygwin\bin, where 'x' is the drive on which you have installed the cygwin distribution. Rebooting is also suggested if you are unable to find another cygwin DLL.
我尝试按照错误中的说明进行操作,但我只有一个 cygwin1.dll 文件。
所以我尝试在 git bash shell 中执行以下命令:
/c/cygwin/bin/man
我得到:
0 [main] man (11952) C:\cygwin\bin\man.exe: *** fatal error - cygheap base mismatch detected - 0x180317408/0x180343408. This problem is probably due to using incompatible versions of the cygwin DLL. Search for cygwin1.dll using the Windows Start->Find/Search facility and delete all but the most recent version. The most recent version should reside in x:\cygwin\bin, where 'x' is the drive on which you have installed the cygwin distribution. Rebooting is also suggested
我已经尝试在漏洞利用保护面板中禁用 ASRL 选项(如某人所建议的那样)并重新启动,但这并没有解决问题。
如果我写
which -a cygwin1.dll
我得到:
/c/cygwin/bin/cygwin1.dll
/c/cygwin/bin/cygwin1.dll
看起来我有两个cygwin1.dll但实际上我只有一个.. 几天以来我一直在寻找可能的解决方案,但似乎对我没有任何帮助。 有什么建议吗?
虽然错误消息提到 cygwin1.dll
,但它具有误导性,因为 Git for Windows
使用 MSYS
并且文件已重命名 msys-2.0.dll
不幸的是,MSYS 团队在导入和修改 Cygwin
源时忘记更改错误消息:
- 在您的计算机上找到所有
msys-2.0.dll
并为它们添加后缀.bkp
。 - 无论您在哪里找到它们,请将
"C:\Program Files\Git\usr\bin\msys-2.0.dll"
复制到这些位置。
备注:
- 如果您要从
C:\msys64\usr\bin\msys-2.0.dll
复制到所有其他位置,那么您会丢失末尾显示您所在分支的漂亮的附加文本(master)
- 如果您只是决定删除所有额外的 dll 并仅将
C:\msys64\usr\bin
添加到您的路径,则必须存在它查找的相对于其通常所在目录的依赖项。
- 如果您只是决定删除所有额外的 dll 并仅将
- 因为显然我浏览了所选答案并错过了关于
msys-2.0.dll
的部分,所以我必须自己解决这个问题。备查:- 运行
listdlls -r -v -d msys-2.0.dll
- 检查基础、路径和版本信息是否存在差异。
- 运行