Skip to content

test_sendfile_close_peer_in_the_middle_of_receiving fails with Linux 6.10 release candidates and non-4KiB page size #120226

Description

@xry111

Bug report

Bug description:

With Linux-6.10-rc2 configured to use 16KiB page:

$ python3 -m test test.test_asyncio.test_sendfile -m test_sendfile_close_peer_in_the_middle_of_receiving -v 
== CPython 3.12.4 (main, Jun 7 2024, 14:39:05) [GCC 14.1.0]
== Linux-6.10.0-rc2+-loongarch64-with-glibc2.39 little-endian
== Python build: release shared LTO+PGO
== cwd: /tmp/test_python_worker_1673æ
== CPU count: 8
== encodings: locale=UTF-8 FS=utf-8
== resources: all test resources are disabled, use -u option to unskip tests

Using random seed: 3315485672
0:00:00 load avg: 0.03 Run 1 test sequentially
0:00:00 load avg: 0.03 [1/1] test.test_asyncio.test_sendfile
test_sendfile_close_peer_in_the_middle_of_receiving (test.test_asyncio.test_sendfile.EPollEventLoopTests.test_sendfile_close_peer_in_the_middle_of_receiving) ... FAIL
test_sendfile_close_peer_in_the_middle_of_receiving (test.test_asyncio.test_sendfile.PollEventLoopTests.test_sendfile_close_peer_in_the_middle_of_receiving) ... FAIL
test_sendfile_close_peer_in_the_middle_of_receiving (test.test_asyncio.test_sendfile.SelectEventLoopTests.test_sendfile_close_peer_in_the_middle_of_receiving) ... FAIL

======================================================================
FAIL: test_sendfile_close_peer_in_the_middle_of_receiving (test.test_asyncio.test_sendfile.EPollEventLoopTests.test_sendfile_close_peer_in_the_middle_of_receiving)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/usr/lib/python3.12/test/test_asyncio/test_sendfile.py", line 466, in test_sendfile_close_peer_in_the_middle_of_receiving
    with self.assertRaises(ConnectionError):
AssertionError: ConnectionError not raised

======================================================================
FAIL: test_sendfile_close_peer_in_the_middle_of_receiving (test.test_asyncio.test_sendfile.PollEventLoopTests.test_sendfile_close_peer_in_the_middle_of_receiving)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/usr/lib/python3.12/test/test_asyncio/test_sendfile.py", line 466, in test_sendfile_close_peer_in_the_middle_of_receiving
    with self.assertRaises(ConnectionError):
AssertionError: ConnectionError not raised

======================================================================
FAIL: test_sendfile_close_peer_in_the_middle_of_receiving (test.test_asyncio.test_sendfile.SelectEventLoopTests.test_sendfile_close_peer_in_the_middle_of_receiving)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/usr/lib/python3.12/test/test_asyncio/test_sendfile.py", line 466, in test_sendfile_close_peer_in_the_middle_of_receiving
    with self.assertRaises(ConnectionError):
AssertionError: ConnectionError not raised

----------------------------------------------------------------------
Ran 3 tests in 0.028s

FAILED (failures=3)
test test.test_asyncio.test_sendfile failed
test.test_asyncio.test_sendfile failed (3 failures)

== Tests result: FAILURE ==

1 test failed:
    test.test_asyncio.test_sendfile

Total duration: 88 ms
Total tests: run=3 (filtered) failures=3
Total test files: run=1/1 (filtered) failed=1
Result: FAILURE

I have to raise DATA to 272KiB to make the test pass. On an AArch64 system I configured the kernel to use 64KiB page I have to raise it to 1088KiB.

Bisection shows torvalds/linux@8ee602c is the first commit triggering the issue but frankly I've no idea why.

CPython versions tested on:

3.12, CPython main branch

Operating systems tested on:

Linux

Linked PRs

Metadata

Metadata

Assignees

No one assigned

    Labels

    type-bugAn unexpected behavior, bug, or error

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions