Repository navigation
Unlimited loop on trying to import the module of the filesystem encoding if iconv() is used #158889
Copy link
Copy link
Open
Labels
Description
If I run the Python test suite with the UTF-8 mode disabled and a locale which is implemented with the iconv codec, Python enters an unlimited loop trying to import encodings.<encoding> module (ex: import encodings.cp1131).
Example:
LC_ALL=be_BY.CP1131 ./python -u -X utf8=0 -m test test_sys -m xxx -v
In gdb, I get a traceback like that:
Traceback (most recent call first):
<built-in method __import__ of module object at remote 0x8018b0710>
File "/home/vstinner/python/main/Lib/encodings/__init__.py", line 99, in search_function
mod = __import__('encodings.' + modname, fromlist=_import_tail,
File "<frozen importlib._bootstrap_external>", line 155, in _path_stat
File "<frozen importlib._bootstrap_external>", line 1367, in find_spec
File "<frozen importlib._bootstrap_external>", line 1251, in _get_spec
File "<frozen importlib._bootstrap_external>", line 1277, in find_spec
File "<frozen importlib._bootstrap>", line 1216, in _find_spec
File "<frozen importlib._bootstrap>", line 1292, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 1344, in _find_and_load
<built-in method __import__ of module object at remote 0x8018b0710>
File "/home/vstinner/python/main/Lib/encodings/__init__.py", line 99, in search_function
mod = __import__('encodings.' + modname, fromlist=_import_tail,
File "<frozen importlib._bootstrap_external>", line 155, in _path_stat
File "<frozen importlib._bootstrap_external>", line 1367, in find_spec
File "<frozen importlib._bootstrap_external>", line 1251, in _get_spec
File "<frozen importlib._bootstrap_external>", line 1277, in find_spec
File "<frozen importlib._bootstrap>", line 1216, in _find_spec
File "<frozen importlib._bootstrap>", line 1292, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 1344, in _find_and_load
<built-in method __import__ of module object at remote 0x8018b0710>
File "/home/vstinner/python/main/Lib/encodings/__init__.py", line 99, in search_function
mod = __import__('encodings.' + modname, fromlist=_import_tail,
File "<frozen importlib._bootstrap_external>", line 155, in _path_stat
File "<frozen importlib._bootstrap_external>", line 1367, in find_spec
File "<frozen importlib._bootstrap_external>", line 1251, in _get_spec
File "<frozen importlib._bootstrap_external>", line 1277, in find_spec
File "<frozen importlib._bootstrap>", line 1216, in _find_spec
File "<frozen importlib._bootstrap>", line 1292, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 1344, in _find_and_load
<built-in method __import__ of module object at remote 0x8018b0710>
File "/home/vstinner/python/main/Lib/encodings/__init__.py", line 99, in search_function
mod = __import__('encodings.' + modname, fromlist=_import_tail,
File "<frozen importlib._bootstrap_external>", line 155, in _path_stat
File "<frozen importlib._bootstrap_external>", line 1367, in find_spec
File "<frozen importlib._bootstrap_external>", line 1251, in _get_spec
File "<frozen importlib._bootstrap_external>", line 1277, in find_spec
File "<frozen importlib._bootstrap>", line 1216, in _find_spec
File "<frozen importlib._bootstrap>", line 1292, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 1344, in _find_and_load
<built-in method __import__ of module object at remote 0x8018b0710>
File "/home/vstinner/python/main/Lib/encodings/__init__.py", line 99, in search_function
mod = __import__('encodings.' + modname, fromlist=_import_tail,
(...)
I was trying to run test_codecs.LocaleCodecTest on every supported locale on FreeBSD:
for loc in $(locale -a); do echo "== locale $loc =="; LC_ALL=$loc LANG=$loc ./python -X utf8=0 -m test -v test_codecs -m LocaleCodecTest || break; done
Reactions are currently unavailable
Activity
vstinner commentedon Oct 6, 2026
I can reproduce this issue on FreeBSD 15 and FreeBSD 16.
Output:
vstinner commentedon Oct 6, 2026
Ah, I can reproduce the issue on Linux (Fedora 44) using:
LC_ALL=hy_AM.armscii8 LANG=hy_AM.armscii8 ./python -X utf8=0 -m test -v test_codecs -m LocaleCodecTestSo the issue is not specific to FreeBSD.
[-]FreeBSD: Unlimited loop on trying to import the module of the filesystem encoding if iconv() is used[/-][+]Unlimited loop on trying to import the module of the filesystem encoding if iconv() is used[/+]vstinner commentedon Oct 6, 2026
cc @serhiy-storchaka
vstinner commentedon Oct 6, 2026
On Linux, I can reproduce the issue with these locales:
hy_AM.armscii8ka_GEka_GE.georgianpsOn FreeBSD 15, I can reproduce the issue with these locales:
be_BY.CP1131hi_IN.ISCII-DEVhy_AM.ARMSCII-8