I wrote some simple application in C (for test) - GCC 9.3.0 on CYGWIN (x86_64-pc-cygwin) on Windows 10. And it worked fine. But 1-2 days ago Windows 10 was updated (Feature Update 1909 (2)). I dont know is the update a reason of the next error, but now the application can sometimes work, but more often it fails with an error:
$ ./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.
This happens when it's running in the Cygwin console (bash) - Cygwin.bat. I dont see strange things in the bash environment. But it always works fine being running in the PowerShell (cygwin1.dll is in the same folder as the app). ldd xxx.exe
in the Cygwin's bash shows:
$ 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)
I build the app with:
...
CC = d:/apps/cygwin/gcc
LIBS := libFreeImage.a
...
$(EXE): $(OBJECTS) $(HEADERS)
$(CC) $(CFLAGS) $(OBJECTS) -o $(EXE) $(LIBS)
What's wrong here? Where can there be the error?