summaryrefslogtreecommitdiffstats
path: root/Lib/multiprocessing
diff options
context:
space:
mode:
authorPablo Galindo <Pablogsal@gmail.com>2018-09-28 09:51:05 (GMT)
committerVictor Stinner <vstinner@redhat.com>2018-09-28 09:51:05 (GMT)
commit077061a7b24917aaf31057885c69919c5a553c88 (patch)
treeec0abb12b7da3ec882d82b31589def05ec4454dc /Lib/multiprocessing
parent1fba2ffc37da52c08db51fe4360459990b0311c9 (diff)
downloadcpython-077061a7b24917aaf31057885c69919c5a553c88.zip
cpython-077061a7b24917aaf31057885c69919c5a553c88.tar.gz
cpython-077061a7b24917aaf31057885c69919c5a553c88.tar.bz2
bpo-34521: Fix tests in test_multiprocessing_spawn to use correctly CMSG_SPACE (GH-9613)
After some failures in AMD64 FreeBSD CURRENT Debug 3.x buildbots regarding tests in test_multiprocessing_spawn and after examining similar failures in test_socket, some errors in the calculation of ancillary data buffers were found in multiprocessing.reduction. CMSG_LEN() can often be used as the buffer size for recvmsg() to receive a single item of ancillary data, but RFC 3542 requires portable applications to use CMSG_SPACE() and thus include space for padding, even when the item will be the last in the buffer. The failures we experience are due to the usage of CMSG_LEN() instead of CMSG_SPACE().
Diffstat (limited to 'Lib/multiprocessing')
-rw-r--r--Lib/multiprocessing/reduction.py2
1 files changed, 1 insertions, 1 deletions
diff --git a/Lib/multiprocessing/reduction.py b/Lib/multiprocessing/reduction.py
index 473fd59..5593f06 100644
--- a/Lib/multiprocessing/reduction.py
+++ b/Lib/multiprocessing/reduction.py
@@ -154,7 +154,7 @@ else:
'''Receive an array of fds over an AF_UNIX socket.'''
a = array.array('i')
bytes_size = a.itemsize * size
- msg, ancdata, flags, addr = sock.recvmsg(1, socket.CMSG_LEN(bytes_size))
+ msg, ancdata, flags, addr = sock.recvmsg(1, socket.CMSG_SPACE(bytes_size))
if not msg and not ancdata:
raise EOFError
try: