Issue 22011: test_os extended attribute setxattr tests can fail with ENOSPC (Errno 28) (original) (raw)

(In the future, please just show the test failures and their tracebacks rather than uploading a tar file.)

The logs show three test failures in test_os:

ERROR: test_fds (test.test_os.ExtendedAttributeTests)

Traceback (most recent call last): File "/home/yannick/c/src/Python-3.4.1/Lib/test/test_os.py", line 2238, in test_fds self._check_xattrs(getxattr, setxattr, removexattr, listxattr) File "/home/yannick/c/src/Python-3.4.1/Lib/test/test_os.py", line 2213, in _check_xattrs self._check_xattrs_str(str, *args, **kwargs) File "/home/yannick/c/src/Python-3.4.1/Lib/test/test_os.py", line 2202, in _check_xattrs_str setxattr(fn, s("user.test"), b"a"*1024, **kwargs) File "/home/yannick/c/src/Python-3.4.1/Lib/test/test_os.py", line 2231, in setxattr os.setxattr(fp.fileno(), *args) OSError: [Errno 28] No space left on device: 4

====================================================================== ERROR: test_lpath (test.test_os.ExtendedAttributeTests)

Traceback (most recent call last): File "/home/yannick/c/src/Python-3.4.1/Lib/test/test_os.py", line 2223, in test_lpath os.listxattr, follow_symlinks=False) File "/home/yannick/c/src/Python-3.4.1/Lib/test/test_os.py", line 2213, in _check_xattrs self._check_xattrs_str(str, *args, **kwargs) File "/home/yannick/c/src/Python-3.4.1/Lib/test/test_os.py", line 2202, in _check_xattrs_str setxattr(fn, s("user.test"), b"a"*1024, **kwargs) OSError: [Errno 28] No space left on device: '@test_16527_tmp'

====================================================================== ERROR: test_simple (test.test_os.ExtendedAttributeTests)

Traceback (most recent call last): File "/home/yannick/c/src/Python-3.4.1/Lib/test/test_os.py", line 2219, in test_simple os.listxattr) File "/home/yannick/c/src/Python-3.4.1/Lib/test/test_os.py", line 2213, in _check_xattrs self._check_xattrs_str(str, *args, **kwargs) File "/home/yannick/c/src/Python-3.4.1/Lib/test/test_os.py", line 2202, in _check_xattrs_str setxattr(fn, s("user.test"), b"a"*1024, **kwargs) OSError: [Errno 28] No space left on device: '@test_16527_tmp'


Note that all three failures are on attempts to set a 1024-byte extended attributes on a /tmp file with os.setxattr(), a function which is just a wrapper around the Linux setxattr system call. "man 2 setxattr" documents that the call can fail with ENOSPC (Errno 28) if "there is insufficient space remaining to store the extended attribute". "man 5 attr", the overview of extended attribute support, notes that there are various kernel and file system specific limits on extended attributes, including length restrictions. So presumably there may be legitimate reasons why these tests could get ENOSPC on particular system configurations. It would be better if test_os anticipated such problems and passed those tests with a warning if ENOSPC is returned.

http://man7.org/linux/man-pages/man2/setxattr.2.html http://man7.org/linux/man-pages/man5/attr.5.html