On 2020-06-06 19:35, Takashi Yano via Cygwin wrote:
> On Sat, 06 Jun 2020 13:20:16 +0200
> ASSI wrote:
>> Takashi Yano via Cygwin writes:
>>>> 1. Rename /usr/share/locale to something else, like local.bak.
>>>> 2. Start mintty in the usual way.
>>>> 3. Rename the directory from step 1 back to /usr/share/local.
>>>> 4. Work just like the problem never existed either in the shell running
>>>> inside the mintty or even start a new mintty.
>>>
>>> I guess renaming /usr/share/locale/locale.alias is enough.
>>
>> I've had some time to look into this problem again after having updated
>> Cygwin to the latest and greatest.  Indeed, when
>>
>> /usr/share/locale/locale.alias
>>
>> gets renamed, the problem also goes away.  This is great because I don't
>> really need the locale aliases for anything.  Btw, my laptop got
>> upgraded to Win10 1909 (Enterprise) in the meantime, so the issue isn't
>> specific to 1803 as was supected earlier.
>>
>> I then tried to figure out what exactly causes the problem and it turns
>> out that it's the _presence_ of this file with the additional condition
>> that it must not be owned by the user starting the mintty/shell.  Since
>> I install Cygwin on my work laptop with a different (admin) account and
>> not my (non-admin) user account, that explains why I am seeing the
>> problem there and not on other machines.  Before you are going to
>> suggest that it's the admin vs. non-admin rights: no, if I create a
>> locale.alias with my user account (either as an empty file or a copy of
>> the backup file), then the admin account is unable to start a shell in
>> mintty successfully.  I have no idea why the ownership of a file that
>> onnly should get read (and is readable by everyone) would have the
>> effect I'm seeing, but maybe that gives the clue on where to look for a
>> fix.
> 
> Thanks for the additional information. I tested the following steps
> to confirm if the problem can be reproduced.
> 
> 1. Enable Administrator account.
> 2. Remove all groups from account yano other than Users.
> 3. Install cygwin for all with gettext package as Administrator.
> 4. Run mintty from desktop shortcut as Administrator.
> 5. Run mintty from desktop shortcut as yano.
> 
> Both 4 and 5 successfully open mintty window with shell.
> 
> I wonder what is the difference between my environment and yours.

Locale setting?

fhandler_tty.cc(fhandler_pty_slave::setup_locale)@2854 calls
get_langinfo@2768 calls@2781
nlsfuncs.cc(__set_locale_from_locale_alias)@1462
which opens /usr/share/locale/locale.alias@1472.

One problem I see with that is that __set_locale_from_locale_alias is meant to
be called when loadlocale fails with an unrecognized locale, but in
get_langinfo@2778 if the locale is not found, it is defaulted to C before
__set_locale_from_locale_alias is called, defeating the purpose:

  const char *locale = __loadlocale (&loc, LC_CTYPE, new_locale);
  if (!locale)
    locale = "C";

  char tmp_locale[ENCODING_LEN + 1];
  char *ret = __set_locale_from_locale_alias (locale, tmp_locale);
  if (ret)
    locale = tmp_locale;

-- 
Take care. Thanks, Brian Inglis, Calgary, Alberta, Canada

This email may be disturbing to some readers as it contains
too much technical detail. Reader discretion is advised.
[Data in IEC units and prefixes, physical quantities in SI.]
--
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

Reply via email to