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