Subject: Re: bug#69795: 29.1; cmdproxy.exe exits automatically after executing MSYS2 commands

From: Eli Zaretskii <[email-masked]>
Date: Tue, 19 Mar 2024 14:32:16 +0200

> From: [email-masked]
> Cc: [email-masked]
> Date: Tue, 19 Mar 2024 07:54:51 +0900
> 
> Eli Zaretskii <[email-masked]> writes:
> 
> >> c:\msys64\usr\bin\ matters. And iconv.exe under it makes the difference.
> >> In the log below, the process continues after the first call of gdb.exe,
> >> while iconv.exe does not exist.
> >> And the process finishes after the second call of gdb.exe,
> >> while iconv.exe exists.
> >
> > So what is special with iconv.exe?  What does "iconv --version" say?
> 
> Here is the log, and the process finished automatically.
> 
> c:\tmp>c:\msys64\usr\bin\iconv.exe --version
> c:\msys64\usr\bin\iconv.exe --version
> iconv (GNU libiconv 1.17)
> Copyright (C) 2000-2022 Free Software Foundation, Inc.
> License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>
> This is free software: you are free to change and redistribute it.
> There is NO WARRANTY, to the extent permitted by law.
> Written by Bruno Haible.
> 
> c:\tmp>
> Process shell finished
> 
> > Also, what DLLs does it load?  You can find out like this:
> >
> >   objdump -x c:\msys64\usr\bin\iconv.exe | grep -F "DLL Name:"
> 
> I have no objdump. I hope output of ldd.exe helps.
> 
> c:\tmp>c:\msys64\usr\bin\ldd.exe c:\msys64\usr\bin\iconv.exe
> c:\msys64\usr\bin\ldd.exe c:\msys64\usr\bin\iconv.exe
> 	ntdll.dll => /c/WINDOWS/SYSTEM32/ntdll.dll (0x7ffd19ad0000)
> 	KERNEL32.DLL => /c/WINDOWS/System32/KERNEL32.DLL (0x7ffd17c60000)
> 	KERNELBASE.dll => /c/WINDOWS/System32/KERNELBASE.dll (0x7ffd172f0000)
> 	msys-iconv-2.dll => /usr/bin/msys-iconv-2.dll (0x5603f0000)
> 	msys-intl-8.dll => /usr/bin/msys-intl-8.dll (0x430b30000)
> 	msys-2.0.dll => /usr/bin/msys-2.0.dll (0x180040000)
> 
> c:\tmp>
> Process shell finished
> 
> 
> /usr/bin/ is same as c:\msys64\usr\bin\.

So you have an MSYS build of iconv.exe, and it seems to be causing
these problems.  You don't have a MinGW64 build of iconv.exe (in the
c:\msys64\mingw64\bin\ directory).  So if GD|B needs to invoke
iconv.exe, it will invoke the MSYS build, as it cannot find any other
one.  So my suggestion is to download the MinGW64 build of iconv.exe
and install it in the c:\msys64\mingw64\bin\ directory.  It is
supposed to be part of the libiconv package, I think this is it:

  https://packages.msys2.org/package/mingw-w64-x86_64-libiconv

Please tell if doing that solves the problem.