[ANNOUNCEMENT] Update: mintty 2.1.2

Houder houder@xs4all.nl
Mon Jul 27 20:58:00 GMT 2015


>> On Jul 27 19:44, Thomas Wolff wrote:
>>> Am 27.07.2015 um 17:58 schrieb Houder:
>>> >Hi Thomas,
>>> >
>>> >Moving load_dwm_funcs() did the trick ...
>>> >
>>> >
>>> Thanks again for your analysis.
>>> In Control Panel → Performance Information and Tools → Adjust visual
>>> effects,
>>> it is only the last of the flags, ☐ Use visual styles on windows and
>>> buttons,
>>> that makes the difference; if deselected, mintty crashes if called from a
>>> console or somehow doubly isolated by
>>> (setsid mintty &).
>>>
>>> Apparently, LoadLibrary does not propagate to a forked thread;
>>
>> Forked process, I hope :)
>>
>> No, it doesn't.  Loading a library is purly process lokal on Windows.
>> Cygwin DLLs(*) have special startup code which allows to register them
>> in the process and to re-load them in the child process at fork time.
>>
>> (*) Actually, any DLL using this special entry point would work.
>>     Native Windows DLLs just don't, usually :}
>
> Ha, Corinna, you are the expert here, of course :-)
>
> From MSDN I learned (LoadLibrary() ):
>
>     "Module handles are not global or inheritable. A call to LoadLibrary by one
>      process does not produce a handle that another process can use in calling
>      GetProcAddress (as an example). The other process must make its OWN call to
>      LoadLibrary for the module before calling GetProcAddress"
>
> Well, ok, alright, that makes sense ...
>
> However, if pDwmIsCompositionEnabled() returns 1, which will be the case if one
> has selected 'Windows 7' i.s.o. 'Windows Basic' (Personalization),
>
>     as an example ...
>
> it turned out to be possible to invoke load_dwm_funcs() (i.e. LoadLibrary() )
> before the fork to a child withOUT a crash of the child !!!!!
>
>     After all, it is Windows ?????
>
> No doubt, it will have been documented somewhere (DWM) ...

As an follow-up:

The "companion" to pDwmIsCompositionEnabled(), i.e. pDwmExtendFrameIntoClientArea()
made the child crash -- in update_glass(), Thomas, when 'Windows Basic' had been
selected.

Both "function pointers" always showed the same addresses, but when 'Windows Basic'
had been selected, they turned out to be a jump into 'void'.

Henri


--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple



More information about the Cygwin mailing list