homepage

This issue tracker has been migrated to GitHub , and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title: Crash on non-Windows if Python runs from a non-ASCII directory
Type: crash Stage:
Components: Interpreter Core Versions: Python 3.0
process
Status: closed Resolution: fixed
Dependencies: Superseder:
Assigned To: Nosy List: amaury.forgeotdarc, christian.heimes, pitrou, rbp
Priority: normal Keywords: patch

Created on 2008年05月09日 10:04 by pitrou, last changed 2022年04月11日 14:56 by admin. This issue is now closed.

Files
File name Uploaded Description Edit
getargs.patch pitrou, 2008年05月09日 10:19
Messages (3)
msg66461 - (view) Author: Antoine Pitrou (pitrou) * (Python committer) Date: 2008年05月09日 10:04
(Note: I'm splitting this from #1342 because the fix is much simpler in
the non-Windows case)
py3k does not accept running from a path with non-ascii characters.
$ pwd
/home/antoine/py3k/héhé
$ ./python
Fatal Python error: Py_Initialize: can't initialize sys standard streams
Traceback (most recent call last):
 File "/home/antoine/py3k/pristine/Lib/encodings/__init__.py", line 32,
in <module>
TypeError: zipimporter() argument 1 must be string without null bytes,
not str
Abandon
The following patch solves the problem by fixing a bug in getargs.c
where the "no null bytes" check for non-ASCII strings was wrong.
There is still a failing test, test_xmlrpc, apparently because xmlrpc
wants to output its path in an HTTP header using the "ascii" encoding...
I'd say this is an xmlrpc issue and not an issue with the patch.
msg66557 - (view) Author: Rodrigo Bernardo Pimentel (rbp) (Python committer) Date: 2008年05月10日 18:39
The patch works for me, and I agree the test_xmlrpc is an xmlrpc issue.
Perhaps unrelated to this issue, but I think it makes this whole unicode
getargs situation fragile: I could not understand why the 'z' case (on
the switch where this patch applies, starting on line 879 on the patched
file) does a PyString_Check(arg) and a PyUnicode_Check(arg), while the
corresponding section on case 's' (line 813) only does PyUnicode_Check(arg).
Is this really an inconsistency? Maybe this should go into an issue to
cleanup this switch, according to the comment at its beginning:
	/* XXX WAAAAH! 's', 'y', 'z', 'u', 'Z', 'e', 'w', 't' codes all
	 need to be cleaned up! */
msg66720 - (view) Author: Amaury Forgeot d'Arc (amaury.forgeotdarc) * (Python committer) Date: 2008年05月12日 13:20
Committed as r63161, with tests.
Thanks!
Now let's work on the Windows case...
History
Date User Action Args
2022年04月11日 14:56:34adminsetgithub: 47047
2008年05月12日 13:21:04amaury.forgeotdarcsetstatus: open -> closed
resolution: fixed
messages: + msg66720
nosy: + amaury.forgeotdarc
2008年05月10日 18:39:22rbpsetnosy: + rbp
messages: + msg66557
2008年05月09日 10:19:23pitrousetfiles: + getargs.patch
2008年05月09日 10:19:14pitrousetfiles: - getargs.patch
2008年05月09日 10:04:58pitroucreate

AltStyle によって変換されたページ (->オリジナル) /