Bug 737778

Summary: setlocale() fails if LC_CTYPE is set to Turkish locale
Product: Red Hat Enterprise Linux 6 Reporter: Per Nystrom <centaur>
Component: glibcAssignee: Andreas Schwab <schwab>
Status: CLOSED ERRATA QA Contact: qe-baseos-tools-bugs
Severity: low Docs Contact:
Priority: unspecified    
Version: 6.1CC: aalam, dennis, eng-i18n-bugs, fweimer, jakub, mfranc, schwab, stefan-usenet
Target Milestone: rcKeywords: i18n
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: glibc-2.12-1.41.el6 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: 726536 Environment:
Last Closed: 2011-12-06 17:48:10 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 743047    

Description Per Nystrom 2011-09-13 04:41:55 UTC
+++ This bug was initially created as a clone of Bug #726536 +++

Description of problem:

If the current locale is Turkish, setting a new locale fails if
the locale contains an 'I'.


Steps to Reproduce:

Compile and run:

#include <stdio.h>
#include <locale.h>
int
main(void)
{
    char *s;
    printf("%s\n", setlocale(LC_CTYPE, "tr_TR"));
    printf("%s\n", setlocale(LC_CTYPE, NULL));
    s = setlocale(LC_CTYPE, "tr_TR.ISO8859-9");
    printf("%s\n", s ? s : "null");
    return 0;
}

  
Actual results:

[stefan@fedora-14-amd64 ~]$ ./xxx 
tr_TR
tr_TR
null


Expected results:

tr_TR
tr_TR
tr_TR.ISO8859-9


Additional info:

My guess is that somewhere tolower() fails to convert the 'I'
to a proper lowercase 'i' if LC_CTYPE is Turkish.

This issue currently causes failures in the Fedora buildbot for
the Python project:

http://www.python.org/dev/buildbot/all/builders/AMD64%20Fedora%20without%20threads%203.x/builds/457/steps/test/logs/stdio

======================================================================
ERROR: test_getsetlocale_issue1813 (test.test_locale.TestMiscellaneous)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/buildbot/buildarea/3.x.krah-fedora/build/Lib/test/test_locale.py", line 406, in test_getsetlocale_issue1813
    locale.setlocale(locale.LC_CTYPE, loc)
  File "/home/buildbot/buildarea/3.x.krah-fedora/build/Lib/locale.py", line 538, in setlocale
    return _setlocale(category, locale)
locale.Error: unsupported locale setting

----------------------------------------------------------------------


See also: http://bugs.python.org/issue1813

--- Additional comment from stefan-usenet on 2011-08-02 09:16:14 EDT ---


The test case works with libc-2.11.1:

   Ubuntu Lucid (libc-2.11.1), OpenSUSE (libc-2.11.1)


But not with:

   Fedora 14 (libc-2.13), Fedora 12 ( libc-2.11.2), Debian lenny (libc-2.7), Gentoo (libc-2.13-r2)



If this is a regression in glibc, perhaps the priority should be
raised (or set).

--- Additional comment from updates on 2011-08-15 06:58:02 EDT ---

glibc-2.14.90-5 has been submitted as an update for Fedora 16.
https://admin.fedoraproject.org/updates/glibc-2.14.90-5

--- Additional comment from updates on 2011-08-15 10:59:55 EDT ---

glibc-2.14-6 has been submitted as an update for Fedora 15.
https://admin.fedoraproject.org/updates/glibc-2.14-6

--- Additional comment from updates on 2011-08-15 16:25:32 EDT ---

Package glibc-2.14.90-5:
* should fix your issue,
* was pushed to the Fedora 16 testing repository,
* should be available at your local mirror within two days.
Update it with:
# su -c 'yum update --enablerepo=updates-testing glibc-2.14.90-5'
as soon as you are able to.
Please go to the following url:
https://admin.fedoraproject.org/updates/glibc-2.14.90-5
then log in and leave karma (feedback).

--- Additional comment from stefan-usenet on 2011-08-16 16:51:48 EDT ---


Since the (automated) message asked me to test: Yes, of course I could,
but all download links for Fedora-16 pre-release still point to
Fedora-15-beta:

http://fedoraproject.org/get-prerelease.html

Is there an easy way (preferably a network install iso) to get Fedora-16 alpha?

--- Additional comment from updates on 2011-08-24 11:27:20 EDT ---

glibc-2.14.90-6 has been submitted as an update for Fedora 16.
https://admin.fedoraproject.org/updates/glibc-2.14.90-6

--- Additional comment from updates on 2011-09-02 03:19:03 EDT ---

glibc-2.14.90-7 has been submitted as an update for Fedora 16.
https://admin.fedoraproject.org/updates/glibc-2.14.90-7

--- Additional comment from updates on 2011-09-08 11:04:56 EDT ---

glibc-2.14-7 has been submitted as an update for Fedora 15.
https://admin.fedoraproject.org/updates/glibc-2.14-7

Comment 1 Per Nystrom 2011-09-13 04:43:26 UTC
This is also present in RHEL6.1

[per@rhel6u1 ~]$ cat /etc/redhat-release 
Red Hat Enterprise Linux Server release 6.1 (Santiago)

[per@rhel6u1 ~]$ rpm -q glibc
glibc-2.12-1.25.el6_1.3.x86_64

[per@rhel6u1 ~]$ cat locale_test.c 
#include <stdio.h>
#include <locale.h>
int
main(void)
{
    char *s;
    printf("%s\n", setlocale(LC_CTYPE, "tr_TR"));
    // printf("%s\n", setlocale(LC_CTYPE, "tr_TR.ISO8859-9"));
    printf("%s\n", setlocale(LC_CTYPE, NULL));
    s = setlocale(LC_CTYPE, "tr_TR.ISO8859-9");
    printf("%s\n", s ? s : "null");
    return 0;
}

[per@rhel6u1 ~]$ gcc locale_test.c 

[per@rhel6u1 ~]$ ./a.out 
tr_TR
tr_TR
null

Comment 5 errata-xmlrpc 2011-12-06 17:48:10 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

http://rhn.redhat.com/errata/RHSA-2011-1526.html