New submission from Christian Boltz <[email protected]>:
The following test script works with Python 3.7 (and older), but triggers an
endless loop with Python 3.8:
#!/usr/bin/python3
import shutil
import os
os.mkdir('/dev/shm/t')
os.mkdir('/dev/shm/t/pg')
with open('/dev/shm/t/pg/pol', 'w+') as f:
f.write('pol')
shutil.copytree('/dev/shm/t/pg', '/dev/shm/t/pg/somevendor/1.0')
The important point is probably that 'pg' gets copied into a subdirectory of
itsself. While this worked in Python up to 3.7, doing the same in Python 3.8
runs into an endless loop:
# python3 /home/abuild/rpmbuild/SOURCES/test.py
Traceback (most recent call last):
File "/home/abuild/rpmbuild/SOURCES/test.py", line 15, in <module>
shutil.copytree('/dev/shm/t/pg', '/dev/shm/t/pg/somevendor/1.0')
File "/usr/lib/python3.8/shutil.py", line 547, in copytree
return _copytree(entries=entries, src=src, dst=dst, symlinks=symlinks,
File "/usr/lib/python3.8/shutil.py", line 486, in _copytree
copytree(srcobj, dstname, symlinks, ignore, copy_function,
...
copytree(srcobj, dstname, symlinks, ignore, copy_function,
File "/usr/lib/python3.8/shutil.py", line 547, in copytree
return _copytree(entries=entries, src=src, dst=dst, symlinks=symlinks,
File "/usr/lib/python3.8/shutil.py", line 449, in _copytree
os.makedirs(dst, exist_ok=dirs_exist_ok)
File "/usr/lib/python3.8/os.py", line 206, in makedirs
head, tail = path.split(name)
File "/usr/lib/python3.8/posixpath.py", line 104, in split
sep = _get_sep(p)
File "/usr/lib/python3.8/posixpath.py", line 42, in _get_sep
if isinstance(path, bytes):
RecursionError: maximum recursion depth exceeded while calling a Python object
I also reported this at https://bugzilla.opensuse.org/show_bug.cgi?id=1155839
----------
components: Library (Lib)
messages: 355981
nosy: cboltz
priority: normal
severity: normal
status: open
title: Python 3.8 regression: endless loop in shutil.copytree
type: crash
versions: Python 3.8
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue38688>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com