python / python/cpython

RecvmsgIntoSCMRightsStreamTest and RecvmsgSCMRightsStreamTest fails on NetBSD

未关闭
#125,860 0 条评论 1 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

3.13 3.14 3.15 OS-netbsd tests type-bug
主要语言
Python
星标
77.2k
派生
35.9k
PR 合并指标
PR 指标待抓取

描述

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

贡献指南

打开贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

调研方向

从 Lib/test/test_socket.py 开始,重点查看 RecvmsgIntoSCMRightsStreamTest 和 RecvmsgSCMRightsStreamTest 类中的 testFDPassSeparate 和 testFDPassSeparateMinSpace。在 NetBSD 上重现经过筛选的测试命令,并检查失败的描述符数量断言;完成的标准是四个测试全部通过,同时不改变其他平台上的预期行为。多个已链接的 PR 表明相关工作已经在进行中。

由索引模型根据 Issue 内容生成。

评估

技术栈
python
领域
networking, operating-systems, testing-qa
Issue 类型
缺陷
难度
4/5
预计耗时
3-5 天
活跃度
停滞
描述清晰度
基本清楚
新手友好度
25/100

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。