CYGWIN控制台中出现奇数错误,“检测到cygheap基本不匹配”

问题描述 投票:0回答:1

我用C语言编写了一个简单的应用程序(用于测试)-Windows 10上的CYGWIN(x86_64-pc-cygwin)上的GCC 9.3.0,并且运行良好。但是在1-2天前,Windows 10已更新(功能更新1909(2))。我不知道更新是下一个错误的原因,但是现在应用程序有时可以工作,但更多情况下它会失败并显示错误:

$ ./xxx.exe
      0 [main] xxx (7152) D:\prj\xxx\xxx.exe: *** fatal error - cygheap base mismatch detected - 0x180343408/0x1093408.
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.

[在Cygwin控制台(bash)-Cygwin.bat中运行时会发生。我在bash环境中看不到奇怪的事情。 但是在PowerShell中运行总是正常(cygwin1.dll与应用程序位于同一文件夹中。)> Cygwin的bash中的ldd xxx.exe显示:

$ ldd xxx.exe
        ntdll.dll => /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll (0x7fff5e440000)
        KERNEL32.DLL => /cygdrive/c/WINDOWS/System32/KERNEL32.DLL (0x7fff5da50000)
        KERNELBASE.dll => /cygdrive/c/WINDOWS/System32/KERNELBASE.dll (0x7fff5b860000)
        cygwin1.dll => /cygdrive/d/prj/xxx/cygwin1.dll (0xcc0000)
        FreeImage.dll => /cygdrive/d/prj/xxx/FreeImage.dll (0x180000000)
        WS2_32.dll => /cygdrive/c/WINDOWS/System32/WS2_32.dll (0x7fff5d870000)
        VCOMP140.DLL => /cygdrive/c/WINDOWS/SYSTEM32/VCOMP140.DLL (0x7fff55550000)
        RPCRT4.dll => /cygdrive/c/WINDOWS/System32/RPCRT4.dll (0x7fff5d750000)
        USER32.dll => /cygdrive/c/WINDOWS/System32/USER32.dll (0x7fff5e0b0000)
        win32u.dll => /cygdrive/c/WINDOWS/System32/win32u.dll (0x7fff5bd40000)
        GDI32.dll => /cygdrive/c/WINDOWS/System32/GDI32.dll (0x7fff5cac0000)
        gdi32full.dll => /cygdrive/c/WINDOWS/System32/gdi32full.dll (0x7fff5b570000)
        msvcp_win.dll => /cygdrive/c/WINDOWS/System32/msvcp_win.dll (0x7fff5b3d0000)
        ucrtbase.dll => /cygdrive/c/WINDOWS/System32/ucrtbase.dll (0x7fff5b470000)
        cygwin1.dll => /cygdrive/d/prj/xxx/cygwin1.dll (0xec0000)

我使用以下方式构建应用程序:

...
CC = d:/apps/cygwin/gcc
LIBS := libFreeImage.a
...
$(EXE): $(OBJECTS) $(HEADERS)
    $(CC) $(CFLAGS) $(OBJECTS) -o $(EXE) $(LIBS)

这里怎么了?哪里有错误?

我用C语言编写了一个简单的应用程序(用于测试)-Windows 10上的CYGWIN(x86_64-pc-cygwin)上的GCC 9.3.0,并且运行良好。但是在1-2天前,Windows 10已更新(功能更新1909(2))。我不...

c windows gcc cygwin
1个回答
0
投票

rm /cygdrive/d/prj/xxx/cyg*.dll,问题可能会消失。

© www.soinside.com 2019 - 2024. All rights reserved.