python3-pyzmq: skip test_close_all_fds ptest on musl

test_close_all_fds closes the socket through the IOLoop's shadow socket
and then reads s.closed. pyzmq implements that by calling
zmq_getsockopt() on the handle, which libzmq's reaper thread may already
have freed. With glibc the memory stays mapped, libzmq's tag check fails
and ENOTSOCK comes back; musl's allocator can unmap it, so the ptest run
segfaults intermittently and loses every result after it:

  File ".../tests/test_future.py", line 319 in test_close_all_fds
  Segmentation fault (core dumped)

Closing a socket via a shadow and then querying .closed on the original
segfaults on musl every time in a standalone reproducer and survives on
glibc. Skip the test for musl.

Tested with meta-python-image-ptest-python3-pyzmq on qemux86-64 with
yoe-musl-systemd-wayland.

AI-Generated: Uses Claude Code
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
This commit is contained in:
Khem Raj committed 2026-09-27 12:55:51 -07:00
1 parent c8779946b1
commit 2a36133394
1 file changed
+6
@@ -61,3 +61,9 @@ do_install_ptest() {
cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
install -m 0644 ${S}/pytest.ini ${D}${PTEST_PATH}/pytest.ini
}
do_install_ptest:append:libc-musl() {
sed -i -e "s/ and not test_process_teardown'/ and not test_process_teardown and not test_close_all_fds'/" \
${D}${PTEST_PATH}/run-ptest
grep -q "not test_close_all_fds'" ${D}${PTEST_PATH}/run-ptest || bbfatal "failed to skip test_close_all_fds in run-ptest"
}