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-----