Bug 1217610
| Summary: | UnicodeDecodeError when entering encryption passphrase in language other than English on live install | ||
|---|---|---|---|
| Product: | [Fedora] Fedora | Reporter: | DO NOT USE account not monitored (old adamwill) <adamw+fedora> |
| Component: | anaconda | Assignee: | Anaconda Maintenance Team <anaconda-maint-list> |
| Status: | CLOSED DUPLICATE | QA Contact: | Fedora Extras Quality Assurance <extras-qa> |
| Severity: | urgent | Docs Contact: | |
| Priority: | unspecified | ||
| Version: | 22 | CC: | anaconda-maint-list, danofsatx, g.kaviyarasu, jonathan, robatino, vanmeeuwen+fedora |
| Target Milestone: | --- | ||
| Target Release: | --- | ||
| Hardware: | All | ||
| OS: | All | ||
| Whiteboard: | AcceptedBlocker | ||
| Fixed In Version: | Doc Type: | Bug Fix | |
| Doc Text: | Story Points: | --- | |
| Clone Of: | Environment: | ||
| Last Closed: | 2015-05-06 14:21:04 UTC | Type: | Bug |
| 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: | 1043130 | ||
We've tested that this fixes it:
[adamw@adam anaconda (f22-branch %)]$ git diff
diff --git a/pyanaconda/ui/gui/spokes/lib/passphrase.py b/pyanaconda/ui/gui/spokes/lib/passphrase.py
index c104194..2f49fcd 100644
--- a/pyanaconda/ui/gui/spokes/lib/passphrase.py
+++ b/pyanaconda/ui/gui/spokes/lib/passphrase.py
@@ -168,7 +168,7 @@ class PassphraseDialog(GUIObject, GUIInputCheckHandler):
def _checkStrength(self, inputcheck):
if self._pwq_error:
- return ("dialog-error", _(ERROR_WEAK) % self._pwq_error)
+ return ("dialog-error", _(ERROR_WEAK).encode('utf-8') % self._pwq_error)
else:
return InputCheck.CHECK_OK
there are likely other cases, though. I would think that any time we use a %s substitution into a translated string and the translation has non-ASCII characters in it would fail, but that doesn't actually seem to be the case: I tested a few others (like "error = _("%s cannot be encrypted") % mountpoint" in custom.py and "return _(PASSWORD_WEAK_WITH_ERROR) % (self._pwq_error, done_msg)" in password.py) and they didn't cause crashes. IIRC there's some kind of wrinkle involved where Python *does* somehow know to use utf-8 in some cases but not others, but I'm not sure we ever fully traced that out.
See also https://bugs.python.org/issue9196 - apparently the behaviour of %s as it relates to unicode objects is...unclear (and I'm not sure why it fails in this case, given the information from that bug - perhaps something odd about pwquality.PWQError objects?) Discussed at the 2015-05-04 blocker review meeting.[0] Voted as AcceptedBlocker based on different criteria as cited in Comment #1. AcceptedBlocker - violates "When using the guided partitioning flow, the installer must be able to: ... Complete an installation using any combination of disk configuration options it allows the user to select" for live, non-English installs [0] http://meetbot.fedoraproject.org/meetbot/fedora-blocker-review/2015-05-04/f22-blocker-review.2015-05-04-16.00.log.txt *** This bug has been marked as a duplicate of bug 1217504 *** |
To reproduce: install in any language other than English (I tested with French but I think it affects all cases where translation kicks in) and choose to encrypt the install. Once the encryption passphrase dialog pops up, start typing. Cue crash. Traceback: Traceback (most recent call first): File "/usr/lib64/python2.7/site-packages/pyanaconda/ui/gui/spokes/lib/passphrase.py", line 171, in _checkStrength return ("dialog-error", _(ERROR_WEAK) % self._pwq_error) File "/usr/lib64/python2.7/site-packages/pyanaconda/ui/helpers.py", line 250, in update_check_status new_check_status = self._run_check(self) File "/usr/lib64/python2.7/site-packages/pyanaconda/ui/gui/helpers.py", line 42, in _update_check_status inputcheck.update_check_status() UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 42: ordinal not in range(128) This is related to the infamous https://bugzilla.redhat.com/show_bug.cgi?id=1169019 and https://bugzilla.redhat.com/show_bug.cgi?id=1209563 (fun with locales and encodings in the live environment). Proposing as a Final blocker: "The installer must correctly display all sufficiently complete translations available for use." , https://fedoraproject.org/wiki/Fedora_22_Final_Release_Criteria#Installer_translations (alternatively, any of the 'complete an install' criteria in the case that the install is live and in something other than English).