Package: src:python-psutil
Version: 7.2.2-1
Severity: serious
Tags: ftbfs forky sid patch

Dear maintainer:

During a rebuild of all packages in unstable, this package failed to build.

The failures do not happen always, but the failure rate is higher on single-cpu
systems, so I recommend GRUB_CMDLINE_LINUX="nr_cpus=1" to reproduce. If this
is not enough, I can offer a VM to reproduce, as always.

I've put several build logs here for reference:

https://people.debian.org/~sanvila/build-logs/202610/

Note that the failing tests are not always the same, but there are four or them
which happen often enough:

FAILED tests/test_process.py::TestProcess::test_long_cmdline
FAILED tests/test_unicode.py::TestFSAPIsWithInvalidPath::test_proc_name
FAILED tests/test_unicode.py::TestFSAPIsWithInvalidPath::test_proc_cmdline
FAILED tests/test_unicode.py::TestFSAPIsWithInvalidPath::test_proc_exe

I see there is already a bunch of tests being skipped in debian/rules
for several reasons, so I propose that we do the same for those four tests,
as in the attached patch (where NNNNNNN is to be replaced by the actual bug 
number).

Thanks.

--------------------------------------------------------------------------------
[...]
tests/test_windows.py::RemoteProcessTestCase::test_environ_64 SKIPPED
tests/test_windows.py::TestServices::test_win_service_get SKIPPED
tests/test_windows.py::TestServices::test_win_service_iter SKIPPED

=========================== short test summary info ============================
FAILED tests/test_process.py::TestProcess::test_long_cmdline - AssertionError: 
assert ['-m', 'pytest', '--verbose', '--ignore=tests/test_memleaks.py', '-k', ' 
   not test_disk_partition and not test_import_all and not test_against_findmnt 
and not test_comparisons and not test_who and not test_invocation and not 
test_users and not test_procsmem and not test_all and not 
test_sensors_temperatures and not test_ips and not test_emulate_use_cpuinfo and 
not test_emulate_use_second_file and not test_cpu_freq and not 
test_against_nproc and not test_cpu_freq and not test_cpu_affinity '] == ['-v', 
'-v', '-v', '-v', '-v', '-v', '-v', '-v', '-v', '-v', '-v', '-v', '-v', '-v', 
'-v', '-v', '-v', '-v', '-v', '-v', '-v', '-v', '-v', '-v', '-v', '-v', '-v', 
'-v', '-v', '-v', '-v', '-v', '-v', '-v', '-v', '-v', '-v', '-v', '-v', '-v', 
'-v', '-v', '-v', '-v', '-v', '-v', '-v', '-v', '-v', '-v', '-c', 'import time; 
[time.sleep(0.1) for x in range(100)]']
At index 0 diff: '-m' != '-v'
  Right contains 46 more items, first extra item: '-v'
Full diff:
    [
  -     '-v',
  ?       ^
  +     '-m',
  ?       ^
  +     'pytest',
  +     '--verbose',
  +     '--ignore=tests/test_memleaks.py',
  -     '-v',
  ?       ^
  +     '-k',
  ?       ^
  +     '    not test_disk_partition and not test_import_all and not '
  +     'test_against_findmnt and not test_comparisons and not test_who and not 
'
  +     'test_invocation and not test_users and not test_procsmem and not 
test_all '
  +     'and not test_sensors_temperatures and not test_ips and not '
  +     'test_emulate_use_cpuinfo and not test_emulate_use_second_file and not '
  +     'test_cpu_freq and not test_against_nproc and not test_cpu_freq and not 
'
  +     'test_cpu_affinity ',
  -     '-v',
  -     '-v',
  -     '-v',
  -     '-v',
  -     '-v',
  -     '-v',
  -     '-v',
  -     '-v',
  -     '-v',
  -     '-v',
  -     '-v',
  -     '-v',
  -     '-v',
  -     '-v',
  -     '-v',
  -     '-v',
  -     '-v',
  -     '-v',
  -     '-v',
  -     '-v',
  -     '-v',
  -     '-v',
  -     '-v',
  -     '-v',
  -     '-v',
  -     '-v',
  -     '-v',
  -     '-v',
  -     '-v',
  -     '-v',
  -     '-v',
  -     '-v',
  -     '-v',
  -     '-v',
  -     '-v',
  -     '-v',
  -     '-v',
  -     '-v',
  -     '-v',
  -     '-v',
  -     '-v',
  -     '-v',
  -     '-v',
  -     '-v',
  -     '-v',
  -     '-v',
  -     '-v',
  -     '-v',
  -     '-c',
  -     'import time; [time.sleep(0.1) for x in range(100)]',
    ]
FAILED tests/test_unicode.py::TestFSAPIsWithInvalidPath::test_proc_cmdline - 
AssertionError: assert ['python3.14', '-m', 'pytest', '--verbose', 
'--ignore=tests/test_memleaks.py', '-k', '    not test_disk_partition and not 
test_import_all and not test_against_findmnt and not test_comparisons and not 
test_who and not test_invocation and not test_users and not test_procsmem and 
not test_all and not test_sensors_temperatures and not test_ips and not 
test_emulate_use_cpuinfo and not test_emulate_use_second_file and not 
test_cpu_freq and not test_against_nproc and not test_cpu_freq and not 
test_cpu_affinity '] == ['/tmp/@psutil-147-02nz6vuqf\udcc0\udc80', '-c', 
'import time; [time.sleep(0.1) for x in range(100)]']
At index 0 diff: 'python3.14' != '/tmp/@psutil-147-02nz6vuqf\udcc0\udc80'
  Left contains 4 more items, first extra item: '--verbose'
Full diff:
    [
  -     '/tmp/@psutil-147-02nz6vuqf\udcc0\udc80',
  +     'python3.14',
  -     '-c',
  ?       ^
  +     '-m',
  ?       ^
  -     'import time; [time.sleep(0.1) for x in range(100)]',
  +     'pytest',
  +     '--verbose',
  +     '--ignore=tests/test_memleaks.py',
  +     '-k',
  +     '    not test_disk_partition and not test_import_all and not '
  +     'test_against_findmnt and not test_comparisons and not test_who and not 
'
  +     'test_invocation and not test_users and not test_procsmem and not 
test_all '
  +     'and not test_sensors_temperatures and not test_ips and not '
  +     'test_emulate_use_cpuinfo and not test_emulate_use_second_file and not '
  +     'test_cpu_freq and not test_against_nproc and not test_cpu_freq and not 
'
  +     'test_cpu_affinity ',
    ]
FAILED tests/test_unicode.py::TestFSAPIsWithInvalidPath::test_proc_exe - 
AssertionError: assert '/usr/bin/python3.14' == 
'/tmp/@psutil-147-02nz6vuqf\udcc0\udc80'
- /tmp/@psutil-147-02nz6vuqf��
  + /usr/bin/python3.14
FAILED tests/test_unicode.py::TestFSAPIsWithInvalidPath::test_proc_name - 
AssertionError: assert 'python3.14' == '@psutil-147-02nz6vuqf\udcc0\udc80'
- @psutil-147-02nz6vuqf��
  + python3.14
========== 4 failed, 395 passed, 161 skipped, 38 deselected in 5.02s ===========
E: pybuild pybuild:485: test: plugin pyproject failed with: exit code=1: cd 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.14/build; python3.14 -m pytest --verbose 
--ignore=tests/test_memleaks.py -k '    not test_disk_partition and not test_import_all and 
not test_against_findmnt and not test_comparisons and not test_who and not test_invocation 
and not test_users and not test_procsmem and not test_all and not test_sensors_temperatures 
and not test_ips and not test_emulate_use_cpuinfo and not test_emulate_use_second_file and 
not test_cpu_freq and not test_against_nproc and not test_cpu_freq and not 
test_cpu_affinity '
dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p 3.14 
--parallel=1 returned exit code 13
make: *** [debian/rules:37: binary] Error 25
dpkg-buildpackage: error: debian/rules binary subprocess failed with exit 
status 2
--------------------------------------------------------------------------------
commit 967c32edb6330f83886f7526952722b7dae55bcd
Author: Santiago Vila <[email protected]>
Date:   Thu Oct 8 14:30:00 2026 +0200

    Skip four racy tests. Closes: #NNNNNNN.

diff --git a/debian/rules b/debian/rules
index ef775ab..15565db 100755
--- a/debian/rules
+++ b/debian/rules
@@ -31,6 +31,10 @@ export PYBUILD_TEST_ARGS = --verbose \
                               and not test_against_nproc \
                               and not test_cpu_freq \
                               and not test_cpu_affinity \
+                              and not test_long_cmdline \
+                              and not test_proc_cmdline \
+                              and not test_proc_exe \
+                              and not test_proc_name \
                           '
 
 %:

Reply via email to