This is the mail archive of the cygwin-developers mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Cygwin's spawn/exec, mintty and the "Program Compatibility Assistant"


On 16 February 2012 12:46, Corinna Vinschen wrote:
> Hi guys, and especially
> Hi Andy,
>
>
> A couple of weeks ago we noticed this strange problem with mintty. ÂThe
> "Program Compatibility Assistant" (PCA) on W7 took it under its wings
> for no apparent reason, and if the session was long enough you would
> notice that a specific svchost process, the one running the Pcasvc
> service, would take more and more memory and CPU time.
>
> The solution for this problem was either to ask the user to switch off
> the PCA service, or a change in Cygwin's spawn/exec code. Âin short, PCA
> sets up a Job for a controlled application, but allows to breakaway from
> the job. ÂThat's what Cygwin now does in *every* invocation of
> spawn/exec:
>
> ÂJOBOBJECT_BASIC_LIMIT_INFORMATION jobinfo;
> Âif (QueryInformationJobObject (NULL, JobObjectBasicLimitInformation,
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â &jobinfo, sizeof jobinfo, NULL)
> Â Â Â&& (jobinfo.LimitFlags & (JOB_OBJECT_LIMIT_BREAKAWAY_OK
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â| JOB_OBJECT_LIMIT_SILENT_BREAKAWAY_OK)))
> Â Â{
> Â Â Â/* Add CREATE_BREAKAWAY_FROM_JOB to the CreateProcess flags. */
> Â Â Âc_flags |= CREATE_BREAKAWAY_FROM_JOB;
> Â Â}
>
> While this works, what bugs me is that this additional system call takes
> extra time and we all know that Cygwin is slow. ÂAsk the users.
>
> I have still no idea why mintty is affected. ÂIt doesn't show up in the
> registry-based PCA database. ÂYesterday I found this on MSDN:
> http://msdn.microsoft.com/en-us/library/bb756937.aspx but I don't see
> anything there which would explain the effect for mintty. ÂThere's a
> section called "Detecting Program Failures Due to Deprecated Windows
> Components", maybe that's a hint?

I'm not aware of anything. Is there any pattern to those occurrences?

> Apart from that, apparently there are multiple other ways to disable PCA
> from meddling with mintty. ÂOne of them is the (incorrectly documented)
> registry value
>
> ÂHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Compatibility Assistant\ExecutablesToExclude
>
> which is a REG_MULTI_SZ value you can fill with full paths to the
> exeutables to exclude. ÂI tried that and it actually works. ÂSo, instead
> of calling QueryInformationJobObject for each spawn/exec, we could just
> add mintty.exe to that registry key.
>
> Or, alternatively, mintty could come with a builtin manifest. ÂI just
> don't know how to include a manifest into a binary...

Mintty already has a manifest, namely the res.mft in its sources, so
I'd just need to know what needs to go in there.

Andy


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]