Re: dynamic conpty loading

Greywolf via Cygwin <[email protected]>
Newsgroups gmane.os.cygwin
Message-ID <[email protected]>
On 2025-11-29 04:33, Takashi Yano via Cygwin wrote:
> Hi Thomas,
> 
> On Thu, 27 Nov 2025 17:52:33 +0100
> Thomas Wolff wrote:
>> Am 27.11.2025 um 15:04 schrieb Takashi Yano via Cygwin:
>>> On Thu, 27 Nov 2025 17:20:26 +0900
>>> Takashi Yano wrote:
>>>> On Wed, 26 Nov 2025 19:50:07 +0100
>>>> Thomas Wolff wrote:
>>>>> Am 26.11.2025 um 11:32 schrieb Takashi Yano via Cygwin:
>>>>>> On Fri, 21 Nov 2025 17:58:01 +0100
>>>>>> Thomas Wolff wrote:
>>>>>>
>>>>>>> Am 21.11.2025 um 17:46 schrieb Corinna Vinschen via Cygwin:
>>>>>>>> Hi Thomas,
>>>>>>>>
>>>>>>>> On Nov 21 16:46, Thomas Wolff via Cygwin wrote:
>>>>>>>>> Am 21.11.2025 um 11:04 schrieb Takashi Yano via Cygwin:
>>>>>>>>>> On Sun, 5 Oct 2025 10:15:55 +0200
>>>>>>>>>> Thomas Wolff wrote:
>>>>>>>>>>>>> The procedure seems to be:
>>>>>>>>>>>>> try LoadLibrary("conpty.dll"), (if not successful, fallback to
>>>>>>>>>>>>> GetModuleHandle("kernel32") instead) to retrieve GetProcAddress for
>>>>>>>>>>>>> CreatePseudoConsole, ResizePseudoConsole, ClosePseudoConsole, and
>>>>>>>>>>>>> then somehow (?) use those while calling CreateProcess.
>>>>>>>>>>>>> The latter is woven into the cygwin library and I don't think it's a
>>>>>>>>>>>>> good idea to clone that out of cygwin for a patched process creation
>>>>>>>>>>>>> in mintty.
>>>>>>>>>>>>>
>>>>>>>>>>>>> My question/suggestion:
>>>>>>>>>>>>> Can a cygwin mode switch to a selected conpty library instead of the
>>>>>>>>>>>>> default one please?
>>>>>>>> Where do you expect this conpty.dll to reside?
>>>>>>>>
>>>>>>>> If we do something like that, I would suggest to make sure that this
>>>>>>>> conpty.dll is in a well-defined place. /bin or /lib might be a good
>>>>>>>> idea. And if it exists in this defined place, it will be used by Cygwin.
>>>>>>>>
>>>>>>>> We can tweak the autoload mechanism to allow a primary DLL and a fallback
>>>>>>>> DLL, that drops the need to set the CYWIN env var.
>>>>>>>>
>>>>>>>> The mintty package could contain a post-install script, or some other
>>>>>>>> script in /bin to allow a user with admin rights downloading the latest
>>>>>>>> (or the most sensible) conpty.dll from MSFT.
>>>>>>>>
>>>>>>>> Would that make sense?
>>>>>>>>
>>>>>>>>
>>>>>>>> Corinna
>>>>>>>>
>>>>>>> That makes much sense, yes, thank you. /bin/conpty.dll would probably be
>>>>>>> a good place.
>>>>>> I checked the source of conpty.dll
>>>>>> https://github.com/microsoft/terminal/blob/main/src/winconpty/winconpty.cpp
>>>>>>
>>>>>> conpty.dll seems to launch OpenConsole.exe in the directory where
>>>>>> WindowsTerminal is installed.
>>>>>> However, BUILTIN\Users does not have permission to execute OpenConsole.exe.
>>>>>>
>>>>>> Do you have some idea how to solve this problem?
>>>>>> WindowsTerminal itself can launch OpenConsole.exe, so there should be
>>>>>> some solutions, I think.
>>>>> Did you install the nuget package? It can be extracted with zip, so you
>>>>> can install OpenConsole as a normal program...
>>>>> I did not find a way, though, to invoke it explicitly so that it would
>>>>> solve the pty interworking problems.
>>>> Thanks.
>>>>
>>>> I've made an experimental patch against fhandler/pty.cc and
>>>> draft package named openconsole that installs official OpenConsole.exe
>>>> binary into /usr/bin.
>>>>
>>>> I confirmed the patch with openconsole package enables the mouse
>>>> support for vim91 and neovim 0.8.0 (native windows binary) in
>>>> pseudo console.
>>>>
>>>> Any comments and suggestions would be appreciated.
>>> openconsole-1.23.12811.0-1.cygwin.patch fixed.
>> Thanks, I've tried to build latest newlib-cygwin with the 0001-... patch
>> but then I'm getting this:
>>
>>         0 [main] bash 27975 child_copy: dll data read copy failed,
>> 0x7FFA4C7CE000..0x7FFA4C7E7C90, done 0, windows pid 22444, Win32 error 299
>>                                                                    0
>> [main] -bash 27950 dofork: child -1 - forked process 22444 died
>> unexpectedly, retry 0, exit code 0xC0000005, errno 11
>>                           -bash: fork: retry: Resource temporarily
>> unavailable
> 
> Thanks for testing.
> When do you get the error above?
> 
> In my environment, the patch works under Win11/Win10 with and without
> OpenConsole.exe installed.
> 
> Win32 error 299 is ERROR_PARTIAL_COPY, so child_copy copied only
> partially some reason. However, I don't change any code path for
> native cygwin program with this patch. Therefore, I believe the
> patch does not affect fork().
> 

Couple of things:

1.  Is a rebase necessary to work with this, perhaps?
2.  Should not .dll objects go to lib, not bin?


-- 
--*greywolf;


-- 
Problem reports:      https://cygwin.com/problems.html
FAQ:                  https://cygwin.com/faq/
Documentation:        https://cygwin.com/docs.html
Unsubscribe info:     https://cygwin.com/ml/#unsubscribe-simple
OpenPGP_0x2C80F168914E2DF6.asc (application/pgp-keys, 3 KB)
-----BEGIN PGP PUBLIC KEY BLOCK-----

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
0kPuE1qAMj8Fczu7H4s=
=UJZq
-----END PGP PUBLIC KEY BLOCK-----
OpenPGP_signature.asc (application/pgp-signature, 840 B)
-----BEGIN PGP SIGNATURE-----

wsF5BAABCAAjFiEEO/vQlkWoKPD1dunXLIDxaJFOLfYFAmkrQGAFAwAAAAAACgkQLIDxaJFOLfYu
Fw/8CclA3M4UPiDUm51W69pMAZumZ7wJcE4StatmaymM3Q0iAyhumQ9qU/CNHjEh+GmW2qFTRmQ6
T9BV7atpptDzU2EaAbYb7JLy3G7lN/kZn9qkc+UvN5vXmM17BoD7oUAYp/NAnhyZtPldgbh9v4R/
epKlRtPQIs1xzAm4Hv5C1MklsWhE8y86UIpFrGTDLGFlY5sdu/4TZkqDgfDEmWJQ91KxFRWPvucg
3SfPqKjuy/HH+cq6//6I6g96tuzRb8cxM+tuMvI335ZB1T7iRPcaUGKgM7IFZebDzTpzmQqtwZ3D
AtYXqFsBLiKL3YCQCApTE/J63NePsrkgpph4rdEii6XQNMnaok2Grz0cHyWOI0nzERzjyQPO+EFn
DUoT6ScS+BV2jVW5RM7cv7sOLIlXWK+jedGpBv7xSij6eAzxE+ZebIWx382Wfo3HZsbad0oePJyD
HCWV15JfgBPYn9INB50OVdA5Ef8c7ZuGB+cejO/Eftu0PoET2TX2Q3xsJjgfRAfDssZNW1LkLdeP
GgzKTEelOEOsPDaSAEMcnpgVmBpaDvOed+xVSwNR9Bly/515t252X+9SyfOdI2LnWfnkgQJPoPBK
+hQtLodPLxUPq9mZddRO5FbKIpmva+aEaY64Wv1CYrZOm0BHDy5ynHuMzALTbpiMnXNNDB3KMfxg
Rgk=
=7lrk
-----END PGP SIGNATURE-----
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.