← Back to team overview

ubuntu-translations-coordinators team mailing list archive

[Bug 223281] Re: locale._parse_localename fails when localename does not contain encoding information (was: alacarte crashed with ValueError in _parse_localename() )

 

reopening, the patch just hides the original problem

** Changed in: python2.6 (Ubuntu)
       Status: Fix Released => New

-- 
locale._parse_localename fails when localename does not contain encoding information (was: alacarte crashed with ValueError in _parse_localename() )
https://bugs.launchpad.net/bugs/223281
You received this bug notification because you are a member of Ubuntu
Translations Coordinators, which is the registrant for Ubuntu
Translations.

Status in Python: New
Status in Ubuntu Translations (internationalization and localization): Fix Released
Status in “python2.6” package in Ubuntu: New
Status in “python2.6” source package in Karmic: Fix Released

Bug description:
Binary package hint: alacarte

"Main Menu" worked with first ubuntu 8.04 installation. After serbian language pack installed program did not working any more and in the terminal generate errors such like this:

user@computer:~$ alacarte
Traceback (most recent call last):
  File "/usr/bin/alacarte", line 36, in <module>
    main()
  File "/usr/bin/alacarte", line 32, in main
    app = MainWindow(datadir, version, sys.argv)
  File "/usr/lib/python2.5/site-packages/Alacarte/MainWindow.py", line 49, in __init__
    self.editor = MenuEditor()
  File "/usr/lib/python2.5/site-packages/Alacarte/MenuEditor.py", line 35, in __init__
    self.locale = locale.getdefaultlocale()[0]
  File "/usr/lib/python2.5/locale.py", line 443, in getdefaultlocale
    return _parse_localename(localename)
  File "/usr/lib/python2.5/locale.py", line 375, in _parse_localename
    raise ValueError, 'unknown locale: %s' % localename
ValueError: unknown locale: sr_ME
Error in sys.excepthook:
Traceback (most recent call last):
  File "/usr/lib/python2.5/site-packages/apport_python_hook.py", line 78, in apport_excepthook
    report_file = open(pr_filename, 'wt')
IOError: [Errno 13] Permission denied: '/var/crash/_usr_bin_alacarte.1000.crash'

Original exception was:
Traceback (most recent call last):
  File "/usr/bin/alacarte", line 36, in <module>
    main()
  File "/usr/bin/alacarte", line 32, in main
    app = MainWindow(datadir, version, sys.argv)
  File "/usr/lib/python2.5/site-packages/Alacarte/MainWindow.py", line 49, in __init__
    self.editor = MenuEditor()
  File "/usr/lib/python2.5/site-packages/Alacarte/MenuEditor.py", line 35, in __init__
    self.locale = locale.getdefaultlocale()[0]
  File "/usr/lib/python2.5/locale.py", line 443, in getdefaultlocale
    return _parse_localename(localename)
  File "/usr/lib/python2.5/locale.py", line 375, in _parse_localename
    raise ValueError, 'unknown locale: %s' % localename
ValueError: unknown locale: sr_ME

ProblemType: Crash
Architecture: i386
Date: Sun Apr 27 23:08:17 2008
DistroRelease: Ubuntu 8.04
ExecutablePath: /usr/bin/alacarte
InterpreterPath: /usr/bin/python2.5
Package: alacarte 0.11.5-0ubuntu1
PackageArchitecture: all
ProcCmdline: /usr/bin/python -OOt /usr/bin/alacarte
ProcEnviron:
 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin
 LANG=sr_ME
 SHELL=/bin/bash
PythonArgs: ['/usr/bin/alacarte']
SourcePackage: alacarte
Title: alacarte crashed with ValueError in _parse_localename()
Uname: Linux 2.6.24-16-generic i686
UserGroups:

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

INFORMATION FOR SRU CONSIDERATION FOLLOWS:

1. A statement explaining the impact of the bug on users and justification for backporting the fix to the stable release:

This bug prevents users in some locales (notable Serbia and Antigua, sr_ME and en_AG) from running locale-aware Python software in Ubuntu, including alacarte and software-center.  The latter is particularly problematic, as it is likely to affect many novice users.

The proposed fix is small, clear, in the upstream bugtracker already, and is isolated to one function in one file, and has been used with success by users of Ubuntu Karmic in both the mentioned locales from a PPA.

This appears to qualify as a bug ... "which represents a severe regression from the previous release of Ubuntu. This includes packages which are totally unusable, like being uninstallable or crashing on startup."

It could perhaps be argued that these locales did not exist in earlier versions so this is not technically a regression?

2. An explanation of how the bug has been addressed in the development branch, including the relevant version numbers of packages modified in order to implement the fix.

An attached debdiff for Ubuntu Lucid is attached to this bug report.  It awaits sponsorship.

3. A minimal patch applicable to the stable version of the package.

See attached debdiffs.  The original patch is at http://bugs.python.org/file14881/locale.py-parselocale-patch.diff

4. Detailed instructions how to reproduce the bug.

TEST CASE:

4.1 Install Ubuntu 9.10 Karmic Desktop (i386 and amd64 have both been tested).

4.2 At the GDM login screen, set the locale to English/Antigua and log in (start a session) in that locale.

4.3 Click on Applications -> Ubuntu Software Center

4.4 To see the Python traceback, open a Terminal window and run software-center from it.  A smaller test case would be to run

  LANG=en_AG python2.6 -c "import locale ; print locale.getdefaultlocale()"

and testing all locales in this way can therefore be done by running

  sudo apt-get install ^language-pack-\*  -y    # Install all locales
  for i in $(locale -a)
  do
    echo $i
    LANG=$i python2.6 -c "import locale ; print locale.getdefaultlocale()" || break
  done

4.5 If desired, obtain the patched python2.6 package(s) from the PPA at https://launchpad.net/~jmarsden/+archive/ppa/ and repeat the tests.  software-center will now run and operate correctly.

5. A discussion of the regression potential of the patch and how users could get inadvertently affected.

This patch has been tested for every locale in Ubuntu Karmic, see 4.4 above, but not every Python app has been tested with this patch.  So, by definition, there is a non-zero regression potential.

Nevertheless, the patch is so small, and can be reviewed by anyone who reads Python for correctness.  It affects just one function, and then only in locales without a period in them (there are few such locales).  On that basis, it is hard to see how it can really introduce a regression in practice.  This issue has been around for several versions of Ubuntu, so the current behaviour with the patch in place (for locale-aware Python applications at least) is an obvious improvement over earlier behaviour -- the applications actually run.  So far, no Python apps have been found which this patch affects negatively.  The patch has been tested in several commonly used locales, including en_US.UTF-8, de_DE.utf8, es_ES.utf8 and fr_FR.utf8, as well as the affected locales sr_ME and en_AG.

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