python / python/cpython

RecvmsgIntoSCMRightsStreamTest and RecvmsgSCMRightsStreamTest fails on NetBSD

オープン
#125,860 コメント 0 件 リアクション 1 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

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. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

調査の方向性

Lib/test/test_socket.py から始め、特に RecvmsgIntoSCMRightsStreamTest クラスと RecvmsgSCMRightsStreamTest クラスの testFDPassSeparate および testFDPassSeparateMinSpace を確認してください。NetBSD でフィルタリングされたテストコマンドを再現して実行し、失敗しているディスクリプタ数のアサーションを調査してください。4 つのテストすべてが、他のプラットフォームで期待される動作を変更せずにパスすれば完了です。リンクされた PR のいくつかは、すでに作業が進行中であることを示しています。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
python
領域
networking, operating-systems, testing-qa
issue の種類
バグ
難易度
4/5
見積もり時間
3〜5日
活発さ
停滞
明瞭さ
おおむね明確
初心者へのやさしさ
25/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。