I appreciate FreeBSD is more or less discontinuing i386 support at this point, and I am not sure yet if we are looking at i386 specific failures or if these would also be present in other 32-bit platforms such as ARMv7. See #151019 for ARMv7 test results on FreeBSD 15.1.
This is in poudriere, a script collection FreeBSD uses to build binary packages from ports, and running atop a ZFS file system mount.
NOTE: the test_shutil failure is not shown in detail here, only in the summaries. I have reported that one separately in #150984 because it also occurs on the Tier-1 amd64 (think x86_64 or x64) platform.
This is the console output from "make test 2>&1", hand-edited to remove most parts from test_shutil (reported sparately) and the boring parts; it has the standard output first, and has the "verbose re-run" parts at the bottom.
===> Testing for python315-3.15.0.b2
=== NOTE: the py315-* gdbm, sqlite3, tkinter modules must be rebuilt before the test ===
sleep 5
The following modules are *disabled* in configure script:
_gdbm _sqlite3 _tkinter
Checked 116 modules (37 built-in, 75 shared, 1 n/a on freebsd-14.3-RELEASE-p14-i386, 3 disabled, 0 missing, 0 failed on import)
LD_LIBRARY_PATH=/wrkdirs/usr/ports/lang/python315/work/Python-3.15.0b2 ./python -E ./Tools/build/generate-build-details.py `cat pybuilddir.txt`/build-details.json
LD_LIBRARY_PATH=/wrkdirs/usr/ports/lang/python315/work/Python-3.15.0b2 ./python -E -m test --fast-ci -u-gui --timeout= -j13 -x test_gdb
+ ./python -u -W error -bb -E -m test --fast-ci -u-gui --timeout= -j13 -x test_gdb --dont-add-python-opts
== CPython 3.15.0b2 (main, Jun 5 2026, 20:13:01) [Clang 19.1.7 (https://github.com/llvm/llvm-project.git llvmorg-19.1.7-0-gcd7080
== FreeBSD-14.3-RELEASE-p14-i386-32bit-ELF little-endian
== Python build: release shared LTO
== cwd: /wrkdirs/usr/ports/lang/python315/work/Python-3.15.0b2/build/test_python_worker_529æ
== CPU count: 32
== encodings: locale=UTF-8 FS=utf-8
== resources: all,-cpu,-gui
Using random seed: 1740539547
0:00:00 load avg: 0.01 Run 499 tests in parallel using 13 worker processes (timeout: 10 min, worker timeout: 15 min)
[...]
======================================================================
FAIL: test_truediv (test.test_complex.ComplexTest.test_truediv)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/wrkdirs/usr/ports/lang/python315/work/Python-3.15.0b2/Lib/test/test_complex.py", line 177, in test_truediv
self.assertComplexesAreIdentical(INF/complex(2**1000, 2**-1000),
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
complex(INF, NAN))
^^^^^^^^^^^^^^^^^^
File "/wrkdirs/usr/ports/lang/python315/work/Python-3.15.0b2/Lib/test/support/testcase.py", line 65, in assertComplexesAreIdentical
self.assertFloatsAreIdentical(x.imag, y.imag)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^
File "/wrkdirs/usr/ports/lang/python315/work/Python-3.15.0b2/Lib/test/support/testcase.py", line 53, in assertFloatsAreIdentical
self.fail(msg.format(x, y))
~~~~~~~~~^^^^^^^^^^^^^^^^^^
AssertionError: floats -inf and nan are not identical
----------------------------------------------------------------------
Ran 37 tests in 0.036s
FAILED (failures=1)
test test_complex failed
[...]
======================================================================
FAIL: test_struct_return_2H (test.test_ctypes.test_as_parameter.AsParamNestedWrapperTestCase.test_struct_return_2H)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/wrkdirs/usr/ports/lang/python315/work/Python-3.15.0b2/Lib/test/test_ctypes/test_as_parameter.py", line 172, in test_struct_return_2H
self.assertEqual((s2h.x, s2h.y), (99*2, 88*3))
~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: Tuples differ: (-23216, -1) != (198, 264)
First differing element 0:
-23216
198
- (-23216, -1)
+ (198, 264)
======================================================================
FAIL: test_struct_return_2H (test.test_ctypes.test_as_parameter.AsParamPropertyWrapperTestCase.test_struct_return_2H)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/wrkdirs/usr/ports/lang/python315/work/Python-3.15.0b2/Lib/test/test_ctypes/test_as_parameter.py", line 172, in test_struct_return_2H
self.assertEqual((s2h.x, s2h.y), (99*2, 88*3))
~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: Tuples differ: (-23200, -1) != (198, 264)
First differing element 0:
-23200
198
- (-23200, -1)
+ (198, 264)
======================================================================
FAIL: test_struct_return_2H (test.test_ctypes.test_as_parameter.AsParamWrapperTestCase.test_struct_return_2H)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/wrkdirs/usr/ports/lang/python315/work/Python-3.15.0b2/Lib/test/test_ctypes/test_as_parameter.py", line 172, in test_struct_return_2H
self.assertEqual((s2h.x, s2h.y), (99*2, 88*3))
~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: Tuples differ: (-23200, -1) != (198, 264)
First differing element 0:
-23200
198
- (-23200, -1)
+ (198, 264)
======================================================================
FAIL: test_struct_return_2H (test.test_ctypes.test_as_parameter.BasicWrapTestCase.test_struct_return_2H)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/wrkdirs/usr/ports/lang/python315/work/Python-3.15.0b2/Lib/test/test_ctypes/test_as_parameter.py", line 172, in test_struct_return_2H
self.assertEqual((s2h.x, s2h.y), (99*2, 88*3))
~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: Tuples differ: (-23200, -1) != (198, 264)
First differing element 0:
-23200
198
- (-23200, -1)
+ (198, 264)
======================================================================
FAIL: test_struct_return_2H (test.test_ctypes.test_functions.FunctionTestCase.test_struct_return_2H)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/wrkdirs/usr/ports/lang/python315/work/Python-3.15.0b2/Lib/test/test_ctypes/test_functions.py", line 407, in test_struct_return_2H
self.assertEqual((s2h.x, s2h.y), (99*2, 88*3))
~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: Tuples differ: (-23216, -1) != (198, 264)
First differing element 0:
-23216
198
- (-23216, -1)
+ (198, 264)
======================================================================
FAIL: test_pass_by_value_in_register (test.test_ctypes.test_structures.StructureTestCase.test_pass_by_value_in_register)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/wrkdirs/usr/ports/lang/python315/work/Python-3.15.0b2/Lib/test/test_ctypes/test_structures.py", line 299, in test_pass_by_value_in_register
self.assertEqual(s.first, got.first)
~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^
AssertionError: 3735928559 != 4294944080
----------------------------------------------------------------------
Ran 619 tests in 1.114s
FAILED (failures=6, skipped=55)
test test_ctypes failed
[...]
======================================================================
ERROR: test_headers_overflow_32bits (test.test_os.test_os.TestSendfile.test_headers_overflow_32bits)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/wrkdirs/usr/ports/lang/python315/work/Python-3.15.0b2/Lib/asyncio/runners.py", line 127, in run
return self._loop.run_until_complete(task)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^
File "/wrkdirs/usr/ports/lang/python315/work/Python-3.15.0b2/Lib/asyncio/base_events.py", line 724, in run_until_complete
return future.result()
~~~~~~~~~~~~~^^
File "/wrkdirs/usr/ports/lang/python315/work/Python-3.15.0b2/Lib/test/test_os/test_os.py", line 3792, in test_headers_overflow_32bits
self.server.handler_instance.accumulate = False
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'Server' object has no attribute 'handler_instance'
======================================================================
ERROR: test_trailers_overflow_32bits (test.test_os.test_os.TestSendfile.test_trailers_overflow_32bits)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/wrkdirs/usr/ports/lang/python315/work/Python-3.15.0b2/Lib/asyncio/runners.py", line 127, in run
return self._loop.run_until_complete(task)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^
File "/wrkdirs/usr/ports/lang/python315/work/Python-3.15.0b2/Lib/asyncio/base_events.py", line 724, in run_until_complete
return future.result()
~~~~~~~~~~~~~^^
File "/wrkdirs/usr/ports/lang/python315/work/Python-3.15.0b2/Lib/test/test_os/test_os.py", line 3801, in test_trailers_overflow_32bits
self.server.handler_instance.accumulate = False
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'Server' object has no attribute 'handler_instance'
----------------------------------------------------------------------
Ran 361 tests in 12.772s
FAILED (errors=2, skipped=38)
test test.test_os.test_os failed
[...]
== Tests result: FAILURE ==
[...]
0:01:37 load avg: 4.13 [1/4/1] test_complex failed (1 failure)
Re-running test_complex in verbose mode (matching: test_truediv)
test_truediv (test.test_complex.ComplexTest.test_truediv) ... FAIL
======================================================================
FAIL: test_truediv (test.test_complex.ComplexTest.test_truediv)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/wrkdirs/usr/ports/lang/python315/work/Python-3.15.0b2/Lib/test/test_complex.py", line 177, in test_truediv
self.assertComplexesAreIdentical(INF/complex(2**1000, 2**-1000),
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
complex(INF, NAN))
^^^^^^^^^^^^^^^^^^
File "/wrkdirs/usr/ports/lang/python315/work/Python-3.15.0b2/Lib/test/support/testcase.py", line 65, in assertComplexesAreIdentical
self.assertFloatsAreIdentical(x.imag, y.imag)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^
File "/wrkdirs/usr/ports/lang/python315/work/Python-3.15.0b2/Lib/test/support/testcase.py", line 53, in assertFloatsAreIdentical
self.fail(msg.format(x, y))
~~~~~~~~~^^^^^^^^^^^^^^^^^^
AssertionError: floats -inf and nan are not identical
----------------------------------------------------------------------
Ran 1 test in 0.019s
FAILED (failures=1)
test test_complex failed
0:01:37 load avg: 4.13 [2/4/2] test.test_os.test_os failed (2 errors)
Re-running test.test_os.test_os in verbose mode (matching: test_headers_overflow_32bits, test_trailers_overflow_32bits)
test_headers_overflow_32bits (test.test_os.test_os.TestSendfile.test_headers_overflow_32bits) ... ERROR
test_trailers_overflow_32bits (test.test_os.test_os.TestSendfile.test_trailers_overflow_32bits) ... ERROR
======================================================================
ERROR: test_headers_overflow_32bits (test.test_os.test_os.TestSendfile.test_headers_overflow_32bits)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/wrkdirs/usr/ports/lang/python315/work/Python-3.15.0b2/Lib/asyncio/runners.py", line 127, in run
return self._loop.run_until_complete(task)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^
File "/wrkdirs/usr/ports/lang/python315/work/Python-3.15.0b2/Lib/asyncio/base_events.py", line 724, in run_until_complete
return future.result()
~~~~~~~~~~~~~^^
File "/wrkdirs/usr/ports/lang/python315/work/Python-3.15.0b2/Lib/test/test_os/test_os.py", line 3792, in test_headers_overflow_32bits
self.server.handler_instance.accumulate = False
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'Server' object has no attribute 'handler_instance'
======================================================================
ERROR: test_trailers_overflow_32bits (test.test_os.test_os.TestSendfile.test_trailers_overflow_32bits)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/wrkdirs/usr/ports/lang/python315/work/Python-3.15.0b2/Lib/asyncio/runners.py", line 127, in run
return self._loop.run_until_complete(task)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^
File "/wrkdirs/usr/ports/lang/python315/work/Python-3.15.0b2/Lib/asyncio/base_events.py", line 724, in run_until_complete
return future.result()
~~~~~~~~~~~~~^^
File "/wrkdirs/usr/ports/lang/python315/work/Python-3.15.0b2/Lib/test/test_os/test_os.py", line 3801, in test_trailers_overflow_32bits
self.server.handler_instance.accumulate = False
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'Server' object has no attribute 'handler_instance'
----------------------------------------------------------------------
Ran 2 tests in 0.016s
FAILED (errors=2)
test test.test_os.test_os failed
0:01:37 load avg: 4.13 [3/4/3] test_ctypes failed (6 failures)
Re-running test_ctypes in verbose mode (matching: test_struct_return_2H, test_struct_return_2H, test_struct_return_2H, test_struct_return_2H, test_struct_return_2H, test_pass_by_value_in_register)
test_struct_return_2H (test.test_ctypes.test_as_parameter.AsParamNestedWrapperTestCase.test_struct_return_2H) ... FAIL
test_struct_return_2H (test.test_ctypes.test_as_parameter.AsParamPropertyWrapperTestCase.test_struct_return_2H) ... FAIL
test_struct_return_2H (test.test_ctypes.test_as_parameter.AsParamWrapperTestCase.test_struct_return_2H) ... FAIL
test_struct_return_2H (test.test_ctypes.test_as_parameter.BasicWrapTestCase.test_struct_return_2H) ... FAIL
test_struct_return_2H (test.test_ctypes.test_functions.FunctionTestCase.test_struct_return_2H) ... FAIL
test_pass_by_value_in_register (test.test_ctypes.test_structures.StructureTestCase.test_pass_by_value_in_register) ... FAIL
======================================================================
FAIL: test_struct_return_2H (test.test_ctypes.test_as_parameter.AsParamNestedWrapperTestCase.test_struct_return_2H)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/wrkdirs/usr/ports/lang/python315/work/Python-3.15.0b2/Lib/test/test_ctypes/test_as_parameter.py", line 172, in test_struct_return_2H
self.assertEqual((s2h.x, s2h.y), (99*2, 88*3))
~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: Tuples differ: (-23712, -1) != (198, 264)
First differing element 0:
-23712
198
- (-23712, -1)
+ (198, 264)
======================================================================
FAIL: test_struct_return_2H (test.test_ctypes.test_as_parameter.AsParamPropertyWrapperTestCase.test_struct_return_2H)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/wrkdirs/usr/ports/lang/python315/work/Python-3.15.0b2/Lib/test/test_ctypes/test_as_parameter.py", line 172, in test_struct_return_2H
self.assertEqual((s2h.x, s2h.y), (99*2, 88*3))
~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: Tuples differ: (-23696, -1) != (198, 264)
First differing element 0:
-23696
198
- (-23696, -1)
+ (198, 264)
======================================================================
FAIL: test_struct_return_2H (test.test_ctypes.test_as_parameter.AsParamWrapperTestCase.test_struct_return_2H)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/wrkdirs/usr/ports/lang/python315/work/Python-3.15.0b2/Lib/test/test_ctypes/test_as_parameter.py", line 172, in test_struct_return_2H
self.assertEqual((s2h.x, s2h.y), (99*2, 88*3))
~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: Tuples differ: (-23696, -1) != (198, 264)
First differing element 0:
-23696
198
- (-23696, -1)
+ (198, 264)
======================================================================
FAIL: test_struct_return_2H (test.test_ctypes.test_as_parameter.BasicWrapTestCase.test_struct_return_2H)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/wrkdirs/usr/ports/lang/python315/work/Python-3.15.0b2/Lib/test/test_ctypes/test_as_parameter.py", line 172, in test_struct_return_2H
self.assertEqual((s2h.x, s2h.y), (99*2, 88*3))
~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: Tuples differ: (-23696, -1) != (198, 264)
First differing element 0:
-23696
198
- (-23696, -1)
+ (198, 264)
======================================================================
FAIL: test_struct_return_2H (test.test_ctypes.test_functions.FunctionTestCase.test_struct_return_2H)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/wrkdirs/usr/ports/lang/python315/work/Python-3.15.0b2/Lib/test/test_ctypes/test_functions.py", line 407, in test_struct_return_2H
self.assertEqual((s2h.x, s2h.y), (99*2, 88*3))
~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: Tuples differ: (-23712, -1) != (198, 264)
First differing element 0:
-23712
198
- (-23712, -1)
+ (198, 264)
======================================================================
FAIL: test_pass_by_value_in_register (test.test_ctypes.test_structures.StructureTestCase.test_pass_by_value_in_register)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/wrkdirs/usr/ports/lang/python315/work/Python-3.15.0b2/Lib/test/test_ctypes/test_structures.py", line 299, in test_pass_by_value_in_register
self.assertEqual(s.first, got.first)
~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^
AssertionError: 3735928559 != 4294943584
----------------------------------------------------------------------
Ran 6 tests in 0.010s
FAILED (failures=6)
test test_ctypes failed
[...]
4 tests failed again:
test.test_os.test_os test_complex test_ctypes test_shutil
== Tests result: FAILURE then FAILURE ==
10 slowest tests:
- test.test_multiprocessing_spawn.test_processes: 35.8 sec
- test.test_concurrent_futures.test_process_pool: 33.6 sec
- test_socket: 32.7 sec
- test.test_multiprocessing_forkserver.test_processes: 31.5 sec
- test_xmlrpc: 27.8 sec
- test.test_io.test_signals: 24.6 sec
- test.test_multiprocessing_spawn.test_misc: 22.7 sec
- test.test_multiprocessing_forkserver.test_misc: 22.3 sec
- test_imaplib: 21.5 sec
- test_logging: 20.1 sec
29 tests skipped:
test.test_asyncio.test_windows_events
test.test_asyncio.test_windows_utils test.test_os.test_windows
test_android test_apple test_dbm_gnu test_dbm_sqlite3 test_devpoll
test_epoll test_free_threading test_idle test_launcher test_msvcrt
test_perf_profiler test_perfmaps test_remote_pdb
test_samply_profiler test_sqlite3 test_startfile test_tcl
test_tkinter test_ttk test_ttk_textonly test_turtle test_winapi
test_winconsoleio test_winreg test_winsound test_wmi
3 tests skipped (resource denied):
test_peg_generator test_xpickle test_zipfile64
4 re-run tests:
test.test_os.test_os test_complex test_ctypes test_shutil
4 tests failed:
test.test_os.test_os test_complex test_ctypes test_shutil
463 tests OK.
Total duration: 1 min 38 sec
Total tests: run=49,372 failures=14 skipped=2,719
Total test files: run=500/499 failed=4 skipped=29 resource_denied=3 rerun=4
Result: FAILURE then FAILURE
gmake: *** [Makefile:2514: test] Error 2
*** Error code 1
Stop.
make: stopped in /usr/ports/lang/python315
Bug report
Bug description:
I am seeing several test failures on FreeBSD 14.3 i386 but not on 14.3 amd64.
I appreciate FreeBSD is more or less discontinuing i386 support at this point, and I am not sure yet if we are looking at i386 specific failures or if these would also be present in other 32-bit platforms such as ARMv7. See #151019 for ARMv7 test results on FreeBSD 15.1.
It appears that the
test.test_os.test_osfailure is common to 32-bit platforms i386 and armv7, while the test_complex and test_ctypes failures are NOT observed on ARMv7 but seem specific to i386.(Also do note I am not testing on the exact same OS version either; i386 is unsupported on FreBSD 15 and newer so has to use 14.X; this is a bit unfortunate because I am turning two knobs at the same time.)
This is in poudriere, a script collection FreeBSD uses to build binary packages from ports, and running atop a ZFS file system mount.
NOTE: the test_shutil failure is not shown in detail here, only in the summaries. I have reported that one separately in #150984 because it also occurs on the Tier-1 amd64 (think x86_64 or x64) platform.
This is the console output from "make test 2>&1", hand-edited to remove most parts from test_shutil (reported sparately) and the boring parts; it has the standard output first, and has the "verbose re-run" parts at the bottom.
The same content is also attached:
test.log
CPython versions tested on:
3.15
Operating systems tested on:
Other