RecvmsgIntoSCMRightsStreamTest and RecvmsgSCMRightsStreamTest fails on NetBSD
Open
Nobody has claimed this yet.
3.13
3.14
3.15
OS-netbsd
tests
type-bug
- Dominant language
- Python
- Stars
- 77.2k
- Forks
- 35.9k
- PR merge metrics
- PR metrics pending
Description
Bug report
Bug description:
./python -m test -v test_socket -m RecvmsgIntoSCMRightsStreamTest -m RecvmsgSCMRightsStreamTest
== CPython 3.14.0a1+ (heads/main-dirty:37986e830ba, Oct 17 2024, 20:11:54) [GCC 10.5.0]
== NetBSD-10.0-amd64-x86_64-64bit-ELF little-endian
== Python build: debug
== cwd: /home/blue/cpython/build/test_python_worker_29434æ
== CPU count: 4
== encodings: locale=UTF-8 FS=utf-8
== resources: all test resources are disabled, use -u option to unskip tests
Using random seed: 2380016540
0:00:00 load avg: 0.18 Run 1 test sequentially in a single process
0:00:00 load avg: 0.18 [1/1] test_socket
testCmsgTrunc0 (test.test_socket.RecvmsgIntoSCMRightsStreamTest.testCmsgTrunc0) ... ok
testCmsgTrunc1 (test.test_socket.RecvmsgIntoSCMRightsStreamTest.testCmsgTrunc1) ... ok
testCmsgTrunc2Int (test.test_socket.RecvmsgIntoSCMRightsStreamTest.testCmsgTrunc2Int) ... ok
testCmsgTruncLen0 (test.test_socket.RecvmsgIntoSCMRightsStreamTest.testCmsgTruncLen0) ... ok
testCmsgTruncLen0Minus1 (test.test_socket.RecvmsgIntoSCMRightsStreamTest.testCmsgTruncLen0Minus1) ... ok
testCmsgTruncLen0Plus1 (test.test_socket.RecvmsgIntoSCMRightsStreamTest.testCmsgTruncLen0Plus1) ... ok
testCmsgTruncLen1 (test.test_socket.RecvmsgIntoSCMRightsStreamTest.testCmsgTruncLen1) ... ok
testCmsgTruncLen2Minus1 (test.test_socket.RecvmsgIntoSCMRightsStreamTest.testCmsgTruncLen2Minus1) ... ok
testCmsgTruncNoBufSize (test.test_socket.RecvmsgIntoSCMRightsStreamTest.testCmsgTruncNoBufSize) ... ok
testFDPassCMSG_LEN (test.test_socket.RecvmsgIntoSCMRightsStreamTest.testFDPassCMSG_LEN) ... ok
testFDPassCMSG_SPACE (test.test_socket.RecvmsgIntoSCMRightsStreamTest.testFDPassCMSG_SPACE) ... ok
testFDPassEmpty (test.test_socket.RecvmsgIntoSCMRightsStreamTest.testFDPassEmpty) ... ok
testFDPassPartialInt (test.test_socket.RecvmsgIntoSCMRightsStreamTest.testFDPassPartialInt) ... ok
testFDPassPartialIntInMiddle (test.test_socket.RecvmsgIntoSCMRightsStreamTest.testFDPassPartialIntInMiddle) ... ok
testFDPassSeparate (test.test_socket.RecvmsgIntoSCMRightsStreamTest.testFDPassSeparate) ... FAIL
testFDPassSeparateMinSpace (test.test_socket.RecvmsgIntoSCMRightsStreamTest.testFDPassSeparateMinSpace) ... FAIL
testFDPassSimple (test.test_socket.RecvmsgIntoSCMRightsStreamTest.testFDPassSimple) ... ok
testMultipleFDPass (test.test_socket.RecvmsgIntoSCMRightsStreamTest.testMultipleFDPass) ... ok
testCmsgTrunc0 (test.test_socket.RecvmsgSCMRightsStreamTest.testCmsgTrunc0) ... ok
testCmsgTrunc1 (test.test_socket.RecvmsgSCMRightsStreamTest.testCmsgTrunc1) ... ok
testCmsgTrunc2Int (test.test_socket.RecvmsgSCMRightsStreamTest.testCmsgTrunc2Int) ... ok
testCmsgTruncLen0 (test.test_socket.RecvmsgSCMRightsStreamTest.testCmsgTruncLen0) ... ok
testCmsgTruncLen0Minus1 (test.test_socket.RecvmsgSCMRightsStreamTest.testCmsgTruncLen0Minus1) ... ok
testCmsgTruncLen0Plus1 (test.test_socket.RecvmsgSCMRightsStreamTest.testCmsgTruncLen0Plus1) ... ok
testCmsgTruncLen1 (test.test_socket.RecvmsgSCMRightsStreamTest.testCmsgTruncLen1) ... ok
testCmsgTruncLen2Minus1 (test.test_socket.RecvmsgSCMRightsStreamTest.testCmsgTruncLen2Minus1) ... ok
testCmsgTruncNoBufSize (test.test_socket.RecvmsgSCMRightsStreamTest.testCmsgTruncNoBufSize) ... ok
testFDPassCMSG_LEN (test.test_socket.RecvmsgSCMRightsStreamTest.testFDPassCMSG_LEN) ... ok
testFDPassCMSG_SPACE (test.test_socket.RecvmsgSCMRightsStreamTest.testFDPassCMSG_SPACE) ... ok
testFDPassEmpty (test.test_socket.RecvmsgSCMRightsStreamTest.testFDPassEmpty) ... ok
testFDPassPartialInt (test.test_socket.RecvmsgSCMRightsStreamTest.testFDPassPartialInt) ... ok
testFDPassPartialIntInMiddle (test.test_socket.RecvmsgSCMRightsStreamTest.testFDPassPartialIntInMiddle) ... ok
testFDPassSeparate (test.test_socket.RecvmsgSCMRightsStreamTest.testFDPassSeparate) ... FAIL
testFDPassSeparateMinSpace (test.test_socket.RecvmsgSCMRightsStreamTest.testFDPassSeparateMinSpace) ... FAIL
testFDPassSimple (test.test_socket.RecvmsgSCMRightsStreamTest.testFDPassSimple) ... ok
testMultipleFDPass (test.test_socket.RecvmsgSCMRightsStreamTest.testMultipleFDPass) ... ok
======================================================================
FAIL: testFDPassSeparate (test.test_socket.RecvmsgIntoSCMRightsStreamTest.testFDPassSeparate)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/blue/cpython/Lib/test/test_socket.py", line 3747, in testFDPassSeparate
self.checkRecvmsgFDs(2,
~~~~~~~~~~~~~~~~~~~~^^^
self.doRecvmsg(self.serv_sock, len(MSG), 10240),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
maxcmsgs=2)
^^^^^^^^^^^
File "/home/blue/cpython/Lib/test/test_socket.py", line 3692, in checkRecvmsgFDs
self.assertEqual(len(fds), numfds)
~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
AssertionError: 1 != 2
======================================================================
FAIL: testFDPassSeparateMinSpace (test.test_socket.RecvmsgIntoSCMRightsStreamTest.testFDPassSeparateMinSpace)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/blue/cpython/Lib/test/test_socket.py", line 3772, in testFDPassSeparateMinSpace
self.checkRecvmsgFDs(num_fds,
~~~~~~~~~~~~~~~~~~~~^^^^^^^^^
self.doRecvmsg(self.serv_sock, len(MSG),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
socket.CMSG_SPACE(SIZEOF_INT) +
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
socket.CMSG_LEN(SIZEOF_INT * num_fds)),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
maxcmsgs=2, ignoreflags=socket.MSG_CTRUNC)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/blue/cpython/Lib/test/test_socket.py", line 3692, in checkRecvmsgFDs
self.assertEqual(len(fds), numfds)
~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
AssertionError: 1 != 2
======================================================================
FAIL: testFDPassSeparate (test.test_socket.RecvmsgSCMRightsStreamTest.testFDPassSeparate)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/blue/cpython/Lib/test/test_socket.py", line 3747, in testFDPassSeparate
self.checkRecvmsgFDs(2,
~~~~~~~~~~~~~~~~~~~~^^^
self.doRecvmsg(self.serv_sock, len(MSG), 10240),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
maxcmsgs=2)
^^^^^^^^^^^
File "/home/blue/cpython/Lib/test/test_socket.py", line 3692, in checkRecvmsgFDs
self.assertEqual(len(fds), numfds)
~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
AssertionError: 1 != 2
======================================================================
FAIL: testFDPassSeparateMinSpace (test.test_socket.RecvmsgSCMRightsStreamTest.testFDPassSeparateMinSpace)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/blue/cpython/Lib/test/test_socket.py", line 3772, in testFDPassSeparateMinSpace
self.checkRecvmsgFDs(num_fds,
~~~~~~~~~~~~~~~~~~~~^^^^^^^^^
self.doRecvmsg(self.serv_sock, len(MSG),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
socket.CMSG_SPACE(SIZEOF_INT) +
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
socket.CMSG_LEN(SIZEOF_INT * num_fds)),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
maxcmsgs=2, ignoreflags=socket.MSG_CTRUNC)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/blue/cpython/Lib/test/test_socket.py", line 3692, in checkRecvmsgFDs
self.assertEqual(len(fds), numfds)
~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
AssertionError: 1 != 2
----------------------------------------------------------------------
Ran 36 tests in 2.169s
FAILED (failures=4)
test test_socket failed
test_socket failed (4 failures)
== Tests result: FAILURE ==
1 test failed:
test_socket
Total duration: 2.4 sec
Total tests: run=36 (filtered) failures=4
Total test files: run=1/1 (filtered) failed=1
Result: FAILURE
OS: NetBSD 10.0 amd64
CPython versions tested on:
CPython main branch
Operating systems tested on:
Other
Linked PRs
- gh-154239
- gh-154245
- gh-154246
- gh-154247
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with Lib/test/test_socket.py, especially testFDPassSeparate and testFDPassSeparateMinSpace in the RecvmsgIntoSCMRightsStreamTest and RecvmsgSCMRightsStreamTest classes. Reproduce the filtered test command on NetBSD and inspect the failing descriptor-count assertions; done means all four tests pass without changing the expected behavior on other platforms. Several linked PRs indicate that work is already underway.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- networking, operating-systems, testing-qa
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100