【问题标题】:Why can't I fix the cygwin1.dll mismatch issue?为什么我无法修复 cygwin1.dll 不匹配问题?
【发布时间】:2020-03-03 12:17:12
【问题描述】:

我正在尝试执行一个 .sh 脚本(不是我编写的),但出现以下错误:

0 [main] echo (5320) C:\Program Files\Git\usr\bin\echo.exe: *** 致命错误 - 检测到 cygheap 基础不匹配 - 0x180343408/0x180317408。 此问题可能是由于使用了不兼容的 cygwin DLL 版本。 使用 Windows 开始->查找/搜索工具搜索 cygwin1.dll 并删除除最新版本以外的所有版本。最新版本应该 驻留在 x:\cygwin\bin 中,其中“x”是您拥有的驱动器 安装了 cygwin 发行版。如果您还建议重新启动 找不到另一个 cygwin DLL。

我尝试按照错误中的说明进行操作,但我只有一个 cygwin1.dll 文件。

所以我尝试在 git bash shell 中执行以下命令:

/c/cygwin/bin/man

我得到:

0 [main] man (11952) C:\cygwin\bin\man.exe: *** 致命错误 - cygheap 检测到碱基不匹配 - 0x180317408/0x180343408。这个问题是 可能是由于使用了不兼容的 cygwin DLL 版本。搜索 对于 cygwin1.dll,使用 Windows 开始->查找/搜索工具和 删除除最新版本以外的所有版本。最新版本 应该驻留在 x:\cygwin\bin 中,其中“x”是您安装 cygwin 发行版的驱动器。也建议重启

我已经尝试在漏洞利用保护面板中禁用 ASRL 选项(根据某人的建议)并重新启动,但这并没有解决问题。

如果我写

which -a cygwin1.dll

我明白了:

/c/cygwin/bin/cygwin1.dll

/c/cygwin/bin/cygwin1.dll

看起来我有两个 cygwin1.dll 但实际上我只有一个.. 几天以来,我一直在寻找可能的解决方案,但似乎没有什么对我有用。 有什么建议吗?

【问题讨论】:

    标签: cygwin


    【解决方案1】:

    虽然错误消息提到了cygwin1.dll,但它具有误导性,因为Git for Windows 使用的是MSYS,并且文件已重命名为msys-2.0.dll

    不幸的是,MSYS 团队在导入和修改Cygwin 源时忘记更改错误消息:

    【讨论】:

      【解决方案2】:
      • 找到您机器上的所有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 的部分,所以我必须自己解决这个问题。备查:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-04-10
        • 2021-07-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-09
        • 1970-01-01
        相关资源
        最近更新 更多