All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/7] riscv64 ptest fixes
@ 2026-10-16 20:45 OOHehir
  2026-10-16 20:45 ` [PATCH 1/7] strace: skip qual_fault-syscall.test on riscv64 OOHehir
                   ` (7 more replies)
  0 siblings, 8 replies; 20+ messages in thread
From: OOHehir @ 2026-10-16 20:45 UTC (permalink / raw)
  To: openembedded-core; +Cc: raj.khem, tgamblin, OOHehir

This series re-enables the strace, python3 & tcl8 ptests on riscv64 & fixes the
three riscv64 failures that are not timeouts: lttng-tools, tcl/tcl8 &
python3-numpy. Patches 2, 3 & 6 only edit the riscv64 lists in
ptest-packagelists.inc; patch 1 skips one slow strace test on riscv64 &
patches 4, 5 & 7 carry the fixes.

I sent these results to Khem Raj & Trevor Gamblin before posting. Trevor
suggested profiling the per-test durations under QEMU first; patch 1 skips
the slowest test found (see "Per-test durations" below).

Where to look:
- Patch 7 works round a confirmed GCC 15+ bug:
  https://gcc.gnu.org/bugzilla/show_bug.cgi?id=127908
  GCC moves the float-to-integer conversion above the range check in its
  inline ceil/floor/trunc, so ceil(+-inf) raises FE_INVALID.
  -fno-fp-int-builtin-inexact makes GCC call libm instead.
- Patch 4 carries an lttng-tools fix under review upstream:
  https://review.lttng.org/c/lttng-tools/+/18903
- Patch 5 skips binary-40.3, which expects a negative float NaN to stay negative
  when widened to double. RISC-V returns the positive canonical NaN, as the ISA
  requires. Reported on an existing MIPS ticket:
  https://core.tcl-lang.org/tcl/tktview/bf029ced86

Testing:
- qemuriscv64: testimage of core-image-ptest-<pkg> with the autobuilder's
  PTEST_RUNNER_TIMEOUT of 450 s (a test is killed after 450 s without output),
  on my machine, a Xeon E5-1680 v3 from 2014 (a plough-horse rather than a
  stallion). An autobuilder worker will be faster per core, but busier.
- VisionFive 2 v1.3B (JH7110, 4x U74, 8 GB): each package in
  core-image-minimal, ptest-runner -t 1800.

  package  qemuriscv64                  VisionFive 2
  strace   1081 pass, 0 fail, 24 min    1212 pass, 0 fail
  python3  44546 pass, 0 fail, 71 min   44698 pass, 0 fail
  tcl8     152 pass, 0 fail, 10 min     only failure was binary-40.3

Per-test durations under QEMU (TCG), as the longest time without output is
what the 450 s limit measures:
- strace (make -j4, every output line timestamped): the longest gap is 283 s,
  ending with qual_fault-syscall.test, which patch 1 skips on riscv64. Next are
  filtering_syscall-syntax.test (139 s), trace_creds.gen.test (90 s) &
  strace--tips-full.test (65 s); the rest are under 50 s.
- python3: regrtest -j4 prints a progress line at least every 30 s, so the
  longest gap in the full run is around 30 s. Its slowest modules
  (test_concurrent_futures.test_process_pool, about 17 min, & the
  test_multiprocessing_* modules, 6-11 min) are made of many short cases: run
  one at a time, no single case takes over 71 s (MiscTestCase.test_large_pool,
  69-71 s in each start method). So I have not skipped anything there.
- tcl8: tcltest prints once per test file. The longest is reg.test (115 s),
  then regexp.test (70 s) & io.test (45 s).

Still parked: tcl, lttng-tools, perl, python3-cffi, libpcap & zstd pass, but
are too slow for the 450 s limit on my machine. Under TCG (QEMU's software CPU
emulation), ptest-runner kills tcl in unicodeNormalize.test, lttng-tools in
test_valid_filter, perl in t/re/regexp_qr_embed_thr (485 s alone, so perl may
pass on a faster worker) & python3-cffi, each after 450 s without output.
libpcap's run-ptest prints nothing until TESTrun finishes, which takes 9.5 min
even on the board. zstd's compression/window-resize.sh exceeds the 200 s
per-case limit in cli-tests.

To confirm that these fail only on time, I reran them under QEMU with this
series, PTEST_RUNNER_TIMEOUT = "7200" & the cli-tests limit raised to 3600 s
(local changes, not in this series). All passed with 0 failures, as they do on
the board:

  zstd           43 pass            10 min
  libpcap        14801 pass         24 min
  tcl            175 test files     46 min
  lttng-tools    2088 pass          85 min
  python3-numpy  45769 pass        104 min
  python3-cffi   1724 pass         187 min
  perl           2729 pass         219 min

python3-numpy stays parked too: patch 7 fixes its only failure (72 cases of
test_unary_spurious_fpexception), but under the 450 s limit numpy 2.5.4 is
killed before pytest prints its first result.

glib-2.0 is left parked. It passed one run on QEMU (308 pass, 31 min) & on the
board, but it was parked for intermittent failures, which one run cannot rule
out:
https://bugzilla.yoctoproject.org/show_bug.cgi?id=15891
https://bugzilla.yoctoproject.org/show_bug.cgi?id=16230

The numpy results above are for 2.5.3, before the rebase. numpy 2.5.4 with
patch 7, under QEMU with the 7200 s limit: 45993 pass, 0 fail, 87 min. One
earlier 2.5.4 run had a single failure, a wall-clock check in f2py
(test_nameargspattern_backtracking) that requires a regex search to take under
0.2 s & measured 0.22 s under TCG; it passed on the rerun.

OOHehir (7):
  strace: skip qual_fault-syscall.test on riscv64
  ptest-packagelists.inc: re-enable strace for riscv64
  ptest-packagelists.inc: re-enable python3 for riscv64
  lttng-tools: skip kernel cases when kernel tests are disabled
  tcl, tcl8: skip binary-40.3 on RISC-V
  ptest-packagelists.inc: re-enable tcl8 for riscv64
  python3-numpy: call libm for ceil/floor/trunc on riscv64

 .../distro/include/ptest-packagelists.inc     |   7 +-
 .../python/python3-numpy_2.5.4.bb             |   7 ++
 meta/recipes-devtools/strace/strace_7.2.bb    |  13 +++
 meta/recipes-devtools/tcltk/tcl/run-ptest     |   5 +
 meta/recipes-devtools/tcltk8/tcl8/run-ptest   |   5 +
 ...our-LTTNG_TOOLS_DISABLE_KERNEL_TESTS.patch | 108 ++++++++++++++++++
 .../lttng/lttng-tools_2.16.0.bb               |   1 +
 7 files changed, 141 insertions(+), 5 deletions(-)
 create mode 100644 meta/recipes-kernel/lttng/lttng-tools/0001-tests-honour-LTTNG_TOOLS_DISABLE_KERNEL_TESTS.patch

-- 
2.43.0



^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH 1/7] strace: skip qual_fault-syscall.test on riscv64
  2026-10-16 20:45 [PATCH 0/7] riscv64 ptest fixes OOHehir
@ 2026-10-16 20:45 ` OOHehir
  2026-10-16 20:45 ` [PATCH 2/7] ptest-packagelists.inc: re-enable strace for riscv64 OOHehir
                   ` (6 subsequent siblings)
  7 siblings, 0 replies; 20+ messages in thread
From: OOHehir @ 2026-10-16 20:45 UTC (permalink / raw)
  To: openembedded-core; +Cc: raj.khem, tgamblin, OOHehir

On qemuriscv64, the strace ptest goes 283 s without output while
qual_fault-syscall.test finishes. That is 63% of the 450 s ptest-runner
limit, leaving little margin on a loaded autobuilder, so skip it there
before strace is re-enabled for riscv64.

The longest gaps between outputs in core-image-ptest-strace on
qemuriscv64 (make -j4, every output line timestamped), with the test
that ended each:

- qual_fault-syscall.test (283 s)
- filtering_syscall-syntax.test (139 s)
- trace_creds.gen.test (90 s)
- strace--tips-full.test (65 s)

The rest are under 50 s.

strace is not machine-specific, so the skip is keyed on riscv64, as the
gnutls skips in cc848c403a are. It therefore also applies to riscv64
hardware, where the test passes (VisionFive 2).

Signed-off-by: OOHehir <oo.hehir@gmail.com>
---
 meta/recipes-devtools/strace/strace_7.2.bb | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/meta/recipes-devtools/strace/strace_7.2.bb b/meta/recipes-devtools/strace/strace_7.2.bb
index 451ffa6f88..2d6dcb8c75 100644
--- a/meta/recipes-devtools/strace/strace_7.2.bb
+++ b/meta/recipes-devtools/strace/strace_7.2.bb
@@ -57,6 +57,19 @@ do_install_ptest() {
 	    -i ${D}/${PTEST_PATH}/${TESTDIR}/Makefile
 }
 
+# Tests that go too long without output under QEMU for the qemuriscv64 ptest
+# runs. strace is not machine-specific, so this also skips them on riscv64
+# hardware.
+STRACE_PTEST_SKIP ?= ""
+STRACE_PTEST_SKIP:riscv64 = "qual_fault-syscall"
+
+do_install_ptest:append() {
+	for t in ${STRACE_PTEST_SKIP}; do
+		sed -i -e '1a . "${srcdir=.}/init.sh"\nskip_ "Too slow under QEMU on riscv64"' \
+		    ${D}${PTEST_PATH}/${TESTDIR}/$t.test
+	done
+}
+
 RDEPENDS:${PN}-ptest += "make coreutils grep gawk sed locale-base-en-us"
 
 BBCLASSEXTEND = "native"
-- 
2.43.0



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 2/7] ptest-packagelists.inc: re-enable strace for riscv64
  2026-10-16 20:45 [PATCH 0/7] riscv64 ptest fixes OOHehir
  2026-10-16 20:45 ` [PATCH 1/7] strace: skip qual_fault-syscall.test on riscv64 OOHehir
@ 2026-10-16 20:45 ` OOHehir
  2026-10-16 20:45 ` [PATCH 3/7] ptest-packagelists.inc: re-enable python3 " OOHehir
                   ` (5 subsequent siblings)
  7 siblings, 0 replies; 20+ messages in thread
From: OOHehir @ 2026-10-16 20:45 UTC (permalink / raw)
  To: openembedded-core; +Cc: raj.khem, tgamblin, OOHehir

strace was parked with the other failing riscv64 ptests in 22736c5281 &
passes now. core-image-ptest-strace on qemuriscv64, with the previous
commit: 1081 pass, 0 fail, in 24 min. On a VisionFive 2 (JH7110): 1212
pass, 0 fail.

Signed-off-by: OOHehir <oo.hehir@gmail.com>
---
 meta/conf/distro/include/ptest-packagelists.inc | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/meta/conf/distro/include/ptest-packagelists.inc b/meta/conf/distro/include/ptest-packagelists.inc
index 2bd11b1706..5e99b59d4a 100644
--- a/meta/conf/distro/include/ptest-packagelists.inc
+++ b/meta/conf/distro/include/ptest-packagelists.inc
@@ -167,8 +167,8 @@ PTESTS_PROBLEMS:append:riscv32 = " lttng-tools strace"
 PTESTS_SLOW:append:libc-musl = " libc-test"
 
 # These tests don't yet pass for riscv64
-PTESTS_SLOW:remove:riscv64 = "tcl tcl8 python3-cffi strace lttng-tools python3-numpy perl glib-2.0 zstd libpcap"
-PTESTS_PROBLEMS:append:riscv64 = " tcl tcl8 python3-cffi strace lttng-tools python3-numpy perl glib-2.0 zstd libpcap"
+PTESTS_SLOW:remove:riscv64 = "tcl tcl8 python3-cffi lttng-tools python3-numpy perl glib-2.0 zstd libpcap"
+PTESTS_PROBLEMS:append:riscv64 = " tcl tcl8 python3-cffi lttng-tools python3-numpy perl glib-2.0 zstd libpcap"
 
 # These tests don't yet pass for musl qemuarm64
 PTESTS_SLOW:remove:libc-musl:qemuarm64 = "strace perl gnutls glib-2.0"
-- 
2.43.0



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 3/7] ptest-packagelists.inc: re-enable python3 for riscv64
  2026-10-16 20:45 [PATCH 0/7] riscv64 ptest fixes OOHehir
  2026-10-16 20:45 ` [PATCH 1/7] strace: skip qual_fault-syscall.test on riscv64 OOHehir
  2026-10-16 20:45 ` [PATCH 2/7] ptest-packagelists.inc: re-enable strace for riscv64 OOHehir
@ 2026-10-16 20:45 ` OOHehir
  2026-10-16 20:45 ` [PATCH 4/7] lttng-tools: skip kernel cases when kernel tests are disabled OOHehir
                   ` (4 subsequent siblings)
  7 siblings, 0 replies; 20+ messages in thread
From: OOHehir @ 2026-10-16 20:45 UTC (permalink / raw)
  To: openembedded-core; +Cc: raj.khem, tgamblin, OOHehir

python3 was parked in adc448b19e because it hung on qemuriscv64, still
running after 42000 s. It no longer hangs. core-image-ptest-python3 on
qemuriscv64, in two runs: 44546 & 44548 pass, 0 fail, 71 min each. On a
VisionFive 2 (JH7110): 44698 pass, 0 fail.

Signed-off-by: OOHehir <oo.hehir@gmail.com>
---
 meta/conf/distro/include/ptest-packagelists.inc | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/meta/conf/distro/include/ptest-packagelists.inc b/meta/conf/distro/include/ptest-packagelists.inc
index 5e99b59d4a..97c6e35050 100644
--- a/meta/conf/distro/include/ptest-packagelists.inc
+++ b/meta/conf/distro/include/ptest-packagelists.inc
@@ -159,9 +159,6 @@ PTESTS_SLOW = "\
     zstd \
 "
 
-# python3 ptests hang on qemuriscv64
-PTESTS_SLOW:remove:riscv64 = "python3"
-PTESTS_PROBLEMS:append:riscv64 = " python3"
 PTESTS_SLOW:remove:riscv32 = "lttng-tools strace "
 PTESTS_PROBLEMS:append:riscv32 = " lttng-tools strace"
 PTESTS_SLOW:append:libc-musl = " libc-test"
-- 
2.43.0



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 4/7] lttng-tools: skip kernel cases when kernel tests are disabled
  2026-10-16 20:45 [PATCH 0/7] riscv64 ptest fixes OOHehir
                   ` (2 preceding siblings ...)
  2026-10-16 20:45 ` [PATCH 3/7] ptest-packagelists.inc: re-enable python3 " OOHehir
@ 2026-10-16 20:45 ` OOHehir
  2026-10-16 20:45 ` [PATCH 5/7] tcl, tcl8: skip binary-40.3 on RISC-V OOHehir
                   ` (3 subsequent siblings)
  7 siblings, 0 replies; 20+ messages in thread
From: OOHehir @ 2026-10-16 20:45 UTC (permalink / raw)
  To: openembedded-core; +Cc: raj.khem, tgamblin, OOHehir

run-ptest sets LTTNG_TOOLS_DISABLE_KERNEL_TESTS when lttng-modules is not
installed, as on riscv64, but kernel/test_event_disable.py &
tools/save-load/test_save_load.py check only for root & fail with "Kernel
tracer not available". Carry the fix sent upstream.

Signed-off-by: OOHehir <oo.hehir@gmail.com>
---
 ...our-LTTNG_TOOLS_DISABLE_KERNEL_TESTS.patch | 108 ++++++++++++++++++
 .../lttng/lttng-tools_2.16.0.bb               |   1 +
 2 files changed, 109 insertions(+)
 create mode 100644 meta/recipes-kernel/lttng/lttng-tools/0001-tests-honour-LTTNG_TOOLS_DISABLE_KERNEL_TESTS.patch

diff --git a/meta/recipes-kernel/lttng/lttng-tools/0001-tests-honour-LTTNG_TOOLS_DISABLE_KERNEL_TESTS.patch b/meta/recipes-kernel/lttng/lttng-tools/0001-tests-honour-LTTNG_TOOLS_DISABLE_KERNEL_TESTS.patch
new file mode 100644
index 0000000000..ca041e8da8
--- /dev/null
+++ b/meta/recipes-kernel/lttng/lttng-tools/0001-tests-honour-LTTNG_TOOLS_DISABLE_KERNEL_TESTS.patch
@@ -0,0 +1,108 @@
+From f56f36ecd7481d96c99876e8a6f4a609197e7132 Mon Sep 17 00:00:00 2001
+From: OOHehir <oo.hehir@gmail.com>
+Date: Tue, 13 Oct 2026 09:41:51 +0100
+Subject: [PATCH] Fix: tests: honour LTTNG_TOOLS_DISABLE_KERNEL_TESTS in two
+ Python tests
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+OBSERVED ISSUE
+━━━━━━━━━━━━━━
+On a target without lttng-modules, kernel/test_event_disable.py & the
+kernel cases of tools/save-load/test_save_load.py fail with "Kernel tracer
+not available", although the test run sets LTTNG_TOOLS_DISABLE_KERNEL_TESTS=1.
+Observed with the Yocto Project ptest on riscv64, which ships no lttng-modules.
+
+CAUSE
+━━━━━
+Both scripts only check that they run as root before running kernel cases,
+while the other Python tests use lttngtest._Environment.run_kernel_tests(),
+which also honours LTTNG_TOOLS_DISABLE_KERNEL_TESTS.
+
+SOLUTION
+━━━━━━━━
+Use run_kernel_tests() in both scripts. It checks for root as before, & also
+honours LTTNG_TOOLS_DISABLE_KERNEL_TESTS.
+
+Under review on Gerrit: https://review.lttng.org/c/lttng-tools/+/18903
+
+Upstream-Status: Submitted [https://lists.lttng.org/pipermail/lttng-dev/2026-October/031100.html]
+Signed-off-by: OOHehir <oo.hehir@gmail.com>
+---
+ tests/regression/kernel/test_event_disable.py      | 7 ++-----
+ tests/regression/tools/save-load/test_save_load.py | 9 ++++-----
+ 2 files changed, 6 insertions(+), 10 deletions(-)
+
+diff --git a/tests/regression/kernel/test_event_disable.py b/tests/regression/kernel/test_event_disable.py
+index da9f146..a373544 100755
+--- a/tests/regression/kernel/test_event_disable.py
++++ b/tests/regression/kernel/test_event_disable.py
+@@ -15,7 +15,6 @@ Validates that disabling events works correctly:
+ - Disabling by name disables all matching rules regardless of filters
+ """
+ 
+-import os
+ import pathlib
+ import sys
+ import traceback
+@@ -307,11 +306,9 @@ if __name__ == "__main__":
+         ),
+     ]
+ 
+-    is_root = os.getuid() == 0
+-
+-    if not is_root:
++    if not lttngtest._Environment.run_kernel_tests():
+         tap = lttngtest.TapGenerator(len(kernel_tests))
+-        tap.skip_all_remaining("Kernel tests require root privileges")
++        tap.skip_all_remaining("Kernel tests not enabled")
+         sys.exit(0)
+ 
+     tap = lttngtest.TapGenerator(len(kernel_tests))
+diff --git a/tests/regression/tools/save-load/test_save_load.py b/tests/regression/tools/save-load/test_save_load.py
+index 9dd8042..1983263 100755
+--- a/tests/regression/tools/save-load/test_save_load.py
++++ b/tests/regression/tools/save-load/test_save_load.py
+@@ -13,7 +13,6 @@ through save/load cycles, including:
+ - Kernel syscalls and tracepoints
+ """
+ 
+-import os
+ import pathlib
+ import sys
+ import traceback
+@@ -953,11 +952,11 @@ if __name__ == "__main__":
+         ),
+     ]
+ 
+-    is_root = os.getuid() == 0
++    run_kernel_tests = lttngtest._Environment.run_kernel_tests()
+     allows_destructive = lttngtest._Environment.allows_destructive()
+ 
+     total_tests = len(user_tests) + len(agent_tests)
+-    if is_root:
++    if run_kernel_tests:
+         total_tests += len(kernel_tests)
+         if allows_destructive:
+             total_tests += len(destructive_kernel_tests)
+@@ -971,7 +970,7 @@ if __name__ == "__main__":
+         for test_name, test_func, kwargs in agent_tests:
+             run_test(tap, test_env, test_func, test_name, **kwargs)
+ 
+-    if is_root:
++    if run_kernel_tests:
+         with lttngtest.test_environment(
+             with_sessiond=True, log=tap.diagnostic, enable_kernel_domain=True
+         ) as test_env:
+@@ -986,6 +985,6 @@ if __name__ == "__main__":
+                     "Skipping destructive kernel tests (LTTNG_ENABLE_DESTRUCTIVE_TESTS not set)"
+                 )
+     else:
+-        tap.diagnostic("Skipping kernel tests (not running as root)")
++        tap.diagnostic("Skipping kernel tests (not enabled)")
+ 
+     sys.exit(0 if tap.is_successful else 1)
+-- 
+2.43.0
+
diff --git a/meta/recipes-kernel/lttng/lttng-tools_2.16.0.bb b/meta/recipes-kernel/lttng/lttng-tools_2.16.0.bb
index cfc16ed6c7..347bdcc273 100644
--- a/meta/recipes-kernel/lttng/lttng-tools_2.16.0.bb
+++ b/meta/recipes-kernel/lttng/lttng-tools_2.16.0.bb
@@ -72,6 +72,7 @@ SRC_URI = "https://lttng.org/files/lttng-tools/lttng-tools-${PV}.tar.bz2 \
            file://disable-tests2.patch \
            file://0001-m4-ax_am_macros_static.m4-do-not-write-generation-da.patch \
            file://muslfix.patch \
+           file://0001-tests-honour-LTTNG_TOOLS_DISABLE_KERNEL_TESTS.patch \
            "
 
 SRC_URI[sha256sum] = "b8b3244894e49e773d4942b8899f768057974edf75c18dbb48b65bb123c7b2c7"
-- 
2.43.0



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 5/7] tcl, tcl8: skip binary-40.3 on RISC-V
  2026-10-16 20:45 [PATCH 0/7] riscv64 ptest fixes OOHehir
                   ` (3 preceding siblings ...)
  2026-10-16 20:45 ` [PATCH 4/7] lttng-tools: skip kernel cases when kernel tests are disabled OOHehir
@ 2026-10-16 20:45 ` OOHehir
  2026-10-17 10:29   ` [OE-core] " Mathieu Dubois-Briand
  2026-10-16 20:45 ` [PATCH 6/7] ptest-packagelists.inc: re-enable tcl8 for riscv64 OOHehir
                   ` (2 subsequent siblings)
  7 siblings, 1 reply; 20+ messages in thread
From: OOHehir @ 2026-10-16 20:45 UTC (permalink / raw)
  To: openembedded-core; +Cc: raj.khem, tgamblin, OOHehir

binary-40.3 expects a negative float NaN to stay negative when widened to
double. RISC-V returns the positive canonical NaN instead, as the ISA requires,
so the test always fails there. Reported upstream on the matching MIPS ticket.

Signed-off-by: OOHehir <oo.hehir@gmail.com>
---
 meta/recipes-devtools/tcltk/tcl/run-ptest   | 5 +++++
 meta/recipes-devtools/tcltk8/tcl8/run-ptest | 5 +++++
 2 files changed, 10 insertions(+)

diff --git a/meta/recipes-devtools/tcltk/tcl/run-ptest b/meta/recipes-devtools/tcltk/tcl/run-ptest
index 18e03716e3..6991873978 100644
--- a/meta/recipes-devtools/tcltk/tcl/run-ptest
+++ b/meta/recipes-devtools/tcltk/tcl/run-ptest
@@ -38,6 +38,11 @@ SKIP="$SKIP httpProxy-\*"
 SKIP="$SKIP mutex-condition-\*"
 # Timer-related tests are going to be fragile (16324)
 SKIP="$SKIP timer-\*"
+# RISC-V widens a negative float NaN to the positive canonical NaN, so the
+# sign check fails: https://core.tcl-lang.org/tcl/tktview/bf029ced86
+case "$(uname -m)" in
+riscv*) SKIP="$SKIP binary-40.3" ;;
+esac
 
 # Run all tests in tests/*.test unless tests are specified as arguments
 TESTS=${*:-tests/*.test}
diff --git a/meta/recipes-devtools/tcltk8/tcl8/run-ptest b/meta/recipes-devtools/tcltk8/tcl8/run-ptest
index 40666ef851..aa0959f013 100644
--- a/meta/recipes-devtools/tcltk8/tcl8/run-ptest
+++ b/meta/recipes-devtools/tcltk8/tcl8/run-ptest
@@ -36,6 +36,11 @@ SKIP="$SKIP http11-\*"
 SKIP="$SKIP httpProxy-\*"
 # Timer-related tests are going to be fragile (16324)
 SKIP="$SKIP timer-\*"
+# RISC-V widens a negative float NaN to the positive canonical NaN, so the
+# sign check fails: https://core.tcl-lang.org/tcl/tktview/bf029ced86
+case "$(uname -m)" in
+riscv*) SKIP="$SKIP binary-40.3" ;;
+esac
 
 # Run all tests in tests/*.test unless tests are specified as arguments
 TESTS=${*:-tests/*.test}
-- 
2.43.0



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 6/7] ptest-packagelists.inc: re-enable tcl8 for riscv64
  2026-10-16 20:45 [PATCH 0/7] riscv64 ptest fixes OOHehir
                   ` (4 preceding siblings ...)
  2026-10-16 20:45 ` [PATCH 5/7] tcl, tcl8: skip binary-40.3 on RISC-V OOHehir
@ 2026-10-16 20:45 ` OOHehir
  2026-10-16 20:45 ` [PATCH 7/7] python3-numpy: call libm for ceil/floor/trunc on riscv64 OOHehir
  2026-10-17 11:23 ` [PATCH v2 0/8] riscv64 ptest fixes OOHehir
  7 siblings, 0 replies; 20+ messages in thread
From: OOHehir @ 2026-10-16 20:45 UTC (permalink / raw)
  To: openembedded-core; +Cc: raj.khem, tgamblin, OOHehir

The previous commit skips binary-40.3, its only failure on riscv64.
core-image-ptest-tcl8 on qemuriscv64: 152 pass, 0 fail, 607 s. On a
VisionFive 2 (JH7110), binary-40.3 was the only failure.

tcl stays parked: under TCG, unicodeNormalize.test prints nothing for more
than 450 s & ptest-runner kills it. The binary-40.3 skip still helps tcl on
hardware.

Signed-off-by: OOHehir <oo.hehir@gmail.com>
---
 meta/conf/distro/include/ptest-packagelists.inc | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/meta/conf/distro/include/ptest-packagelists.inc b/meta/conf/distro/include/ptest-packagelists.inc
index 97c6e35050..1b76023621 100644
--- a/meta/conf/distro/include/ptest-packagelists.inc
+++ b/meta/conf/distro/include/ptest-packagelists.inc
@@ -164,8 +164,8 @@ PTESTS_PROBLEMS:append:riscv32 = " lttng-tools strace"
 PTESTS_SLOW:append:libc-musl = " libc-test"
 
 # These tests don't yet pass for riscv64
-PTESTS_SLOW:remove:riscv64 = "tcl tcl8 python3-cffi lttng-tools python3-numpy perl glib-2.0 zstd libpcap"
-PTESTS_PROBLEMS:append:riscv64 = " tcl tcl8 python3-cffi lttng-tools python3-numpy perl glib-2.0 zstd libpcap"
+PTESTS_SLOW:remove:riscv64 = "tcl python3-cffi lttng-tools python3-numpy perl glib-2.0 zstd libpcap"
+PTESTS_PROBLEMS:append:riscv64 = " tcl python3-cffi lttng-tools python3-numpy perl glib-2.0 zstd libpcap"
 
 # These tests don't yet pass for musl qemuarm64
 PTESTS_SLOW:remove:libc-musl:qemuarm64 = "strace perl gnutls glib-2.0"
-- 
2.43.0



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 7/7] python3-numpy: call libm for ceil/floor/trunc on riscv64
  2026-10-16 20:45 [PATCH 0/7] riscv64 ptest fixes OOHehir
                   ` (5 preceding siblings ...)
  2026-10-16 20:45 ` [PATCH 6/7] ptest-packagelists.inc: re-enable tcl8 for riscv64 OOHehir
@ 2026-10-16 20:45 ` OOHehir
  2026-10-17 11:23 ` [PATCH v2 0/8] riscv64 ptest fixes OOHehir
  7 siblings, 0 replies; 20+ messages in thread
From: OOHehir @ 2026-10-16 20:45 UTC (permalink / raw)
  To: openembedded-core; +Cc: raj.khem, tgamblin, OOHehir

numpy builds with -std=c11, so GCC 15 onwards expands ceil/floor/trunc
inline on riscv64, & its first scheduling pass moves the fcvt above the
|x| < 2^52 check. ceil(+-inf) & ceil(1e300) then raise FE_INVALID, & the
72 cases of test_unary_spurious_fpexception fail. Confirmed as
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=127908.

-fno-fp-int-builtin-inexact makes GCC call libm, which handles these
inputs correctly. python3-numpy-ptest on a VisionFive 2 (JH7110), with
2.5.3: 45770 pass, 0 fail. On qemuriscv64 with PTEST_RUNNER_TIMEOUT = "7200",
with 2.5.4: 45993 pass, 0 fail.

Signed-off-by: OOHehir <oo.hehir@gmail.com>
---
 meta/recipes-devtools/python/python3-numpy_2.5.4.bb | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/meta/recipes-devtools/python/python3-numpy_2.5.4.bb b/meta/recipes-devtools/python/python3-numpy_2.5.4.bb
index 93aa356db1..192ae3fe75 100644
--- a/meta/recipes-devtools/python/python3-numpy_2.5.4.bb
+++ b/meta/recipes-devtools/python/python3-numpy_2.5.4.bb
@@ -26,6 +26,13 @@ PACKAGECONFIG[svml] = "-Ddisable-svml=false,-Ddisable-svml=true"
 # the overflow tests fail with compiler-rt on aarch64
 LDFLAGS:append:toolchain-clang:aarch64 = " -rtlib=libgcc -unwindlib=libgcc"
 
+# GCC 15 onwards expands ceil/floor/trunc inline on riscv64 but runs the fcvt
+# before the range check, so +-inf raises FE_INVALID & numpy's
+# test_unary_spurious_fpexception fails. Make it call libm instead.
+# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=127908
+CFLAGS:append:toolchain-gcc:riscv64 = " -fno-fp-int-builtin-inexact"
+CXXFLAGS:append:toolchain-gcc:riscv64 = " -fno-fp-int-builtin-inexact"
+
 # To ensure reproducibility, remove entries from __config__ which expose build
 # machine details, such as build paths, host paths, and hardware configuration.
 strip_build_info() {
-- 
2.43.0



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* Re: [OE-core] [PATCH 5/7] tcl, tcl8: skip binary-40.3 on RISC-V
  2026-10-16 20:45 ` [PATCH 5/7] tcl, tcl8: skip binary-40.3 on RISC-V OOHehir
@ 2026-10-17 10:29   ` Mathieu Dubois-Briand
  2026-10-17 11:21     ` Owen O'Hehir
  0 siblings, 1 reply; 20+ messages in thread
From: Mathieu Dubois-Briand @ 2026-10-17 10:29 UTC (permalink / raw)
  To: oo.hehir, openembedded-core; +Cc: raj.khem, tgamblin

On Fri Oct 16, 2026 at 10:45 PM CEST, OOHehir via lists.openembedded.org wrote:
> binary-40.3 expects a negative float NaN to stay negative when widened to
> double. RISC-V returns the positive canonical NaN instead, as the ISA requires,
> so the test always fails there. Reported upstream on the matching MIPS ticket.
>
> Signed-off-by: OOHehir <oo.hehir@gmail.com>
> ---

Hi,

Thanks for your patch. Something looks wrong here, tcl/tcl8 ptests
started to fail on non-riscv architectures with a syntax error:

AssertionError:
Failed ptests:
{'tcl': 'START: ptest-runner\n'
        '2026-10-17T09:16\n'
        '/usr/lib/tcl/ptest/run-ptest: line 73: syntax error: unexpected '
        'newline (expecting ")")\n'
        '\n'
        'ERROR: Exit status is 2\n'
        'DURATION: 0\n'}

ptests which had no test results:
['tcl']

Failed ptests:
{'tcl8': 'START: ptest-runner\n'
         '2026-10-17T09:16\n'
         '/usr/lib/tcl8/ptest/run-ptest: line 69: syntax error: unexpected '
         'newline (expecting ")")\n'
         '\n'
         'ERROR: Exit status is 2\n'
         'DURATION: 0\n'}

ptests which had no test results:
['tcl8']

https://autobuilder.yoctoproject.org/valkyrie/#/builders/109/builds/1396
https://autobuilder.yoctoproject.org/valkyrie/#/builders/110/builds/1385

Can you have a look at the issue?

Thanks,
Mathieu

-- 
Mathieu Dubois-Briand, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com



^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [OE-core] [PATCH 5/7] tcl, tcl8: skip binary-40.3 on RISC-V
  2026-10-17 10:29   ` [OE-core] " Mathieu Dubois-Briand
@ 2026-10-17 11:21     ` Owen O'Hehir
  0 siblings, 0 replies; 20+ messages in thread
From: Owen O'Hehir @ 2026-10-17 11:21 UTC (permalink / raw)
  To: openembedded-core, mathieu.dubois-briand; +Cc: Khem Raj, Trevor Gamblin

Hello Mathieu,

Thanks for this. It looks like it was in the musl build during
do_install_ptest:append:libc-musl. I've modified the tcl recipes' sed
so it only matches at the start of the line. I ran some tests locally
& was able to recreate the issue. My v2 patches now build & install a
valid run-ptest on musl & glibc. I will send v2 of the series shortly.

Regards,

Owen


^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH v2 0/8] riscv64 ptest fixes
  2026-10-16 20:45 [PATCH 0/7] riscv64 ptest fixes OOHehir
                   ` (6 preceding siblings ...)
  2026-10-16 20:45 ` [PATCH 7/7] python3-numpy: call libm for ceil/floor/trunc on riscv64 OOHehir
@ 2026-10-17 11:23 ` OOHehir
  2026-10-17 11:23   ` [PATCH v2 1/8] strace: skip qual_fault-syscall.test on riscv64 OOHehir
                     ` (8 more replies)
  7 siblings, 9 replies; 20+ messages in thread
From: OOHehir @ 2026-10-17 11:23 UTC (permalink / raw)
  To: openembedded-core; +Cc: raj.khem, tgamblin, mathieu.dubois-briand, OOHehir

From: OOHehir <40183643+OOHehir@users.noreply.github.com>

Changes in v2:
- New patch 5: on musl, the tcl & tcl8 recipes add a skip after every line
  containing SKIP="$SKIP, so v1's skip inside a case arm left run-ptest with a
  syntax error (reported by Mathieu Dubois-Briand). Building tcl & tcl8 to
  do_install_ptest_base for qemux86-64 & syntax-checking the installed
  run-ptest: v1 reproduces the autobuilder error on musl, v2 passes on musl &
  glibc.
- Patches 1 & 8: shorter recipe comments, no functional change.

This series re-enables the strace, python3 & tcl8 ptests on riscv64 & fixes the
three riscv64 failures that are not timeouts: lttng-tools, tcl/tcl8 &
python3-numpy. Patches 2, 3 & 7 only edit the riscv64 lists in
ptest-packagelists.inc; patch 1 skips one slow strace test on riscv64 &
patches 4, 6 & 8 carry the fixes. Patch 5 makes the tcl recipes'
musl sed safe for patch 6.

I sent these results to Khem Raj & Trevor Gamblin before posting. Trevor
suggested profiling the per-test durations under QEMU first; patch 1 skips
the slowest test found (see "Per-test durations" below).

Where to look:
- Patch 8 works round a confirmed GCC 15+ bug:
  https://gcc.gnu.org/bugzilla/show_bug.cgi?id=127908
  GCC moves the float-to-integer conversion above the range check in its
  inline ceil/floor/trunc, so ceil(+-inf) raises FE_INVALID.
  -fno-fp-int-builtin-inexact makes GCC call libm instead.
- Patch 4 carries an lttng-tools fix under review upstream:
  https://review.lttng.org/c/lttng-tools/+/18903
- Patch 6 skips binary-40.3, which expects a negative float NaN to stay negative
  when widened to double. RISC-V returns the positive canonical NaN, as the ISA
  requires. Reported on an existing MIPS ticket:
  https://core.tcl-lang.org/tcl/tktview/bf029ced86

Testing:
- qemuriscv64: testimage of core-image-ptest-<pkg> with the autobuilder's
  PTEST_RUNNER_TIMEOUT of 450 s (a test is killed after 450 s without output),
  on my machine, a Xeon E5-1680 v3 from 2014 (a plough-horse rather than a
  stallion). An autobuilder worker will be faster per core, but busier.
- VisionFive 2 v1.3B (JH7110, 4x U74, 8 GB): each package in
  core-image-minimal, ptest-runner -t 1800.

  package  qemuriscv64                  VisionFive 2
  strace   1081 pass, 0 fail, 24 min    1212 pass, 0 fail
  python3  44546 pass, 0 fail, 71 min   44698 pass, 0 fail
  tcl8     152 pass, 0 fail, 10 min     only failure was binary-40.3

Per-test durations under QEMU (TCG), as the longest time without output is
what the 450 s limit measures:
- strace (make -j4, every output line timestamped): the longest gap is 283 s,
  ending with qual_fault-syscall.test, which patch 1 skips on riscv64. Next are
  filtering_syscall-syntax.test (139 s), trace_creds.gen.test (90 s) &
  strace--tips-full.test (65 s); the rest are under 50 s.
- python3: regrtest -j4 prints a progress line at least every 30 s, so the
  longest gap in the full run is around 30 s. Its slowest modules
  (test_concurrent_futures.test_process_pool, about 17 min, & the
  test_multiprocessing_* modules, 6-11 min) are made of many short cases: run
  one at a time, no single case takes over 71 s (MiscTestCase.test_large_pool,
  69-71 s in each start method). So I have not skipped anything there.
- tcl8: tcltest prints once per test file. The longest is reg.test (115 s),
  then regexp.test (70 s) & io.test (45 s).

Still parked: tcl, lttng-tools, perl, python3-cffi, libpcap & zstd pass, but
are too slow for the 450 s limit on my machine. Under TCG (QEMU's software CPU
emulation), ptest-runner kills tcl in unicodeNormalize.test, lttng-tools in
test_valid_filter, perl in t/re/regexp_qr_embed_thr (485 s alone, so perl may
pass on a faster worker) & python3-cffi, each after 450 s without output.
libpcap's run-ptest prints nothing until TESTrun finishes, which takes 9.5 min
even on the board. zstd's compression/window-resize.sh exceeds the 200 s
per-case limit in cli-tests.

To confirm that these fail only on time, I reran them under QEMU with this
series, PTEST_RUNNER_TIMEOUT = "7200" & the cli-tests limit raised to 3600 s
(local changes, not in this series). All passed with 0 failures, as they do on
the board:

  zstd           43 pass            10 min
  libpcap        14801 pass         24 min
  tcl            175 test files     46 min
  lttng-tools    2088 pass          85 min
  python3-numpy  45769 pass        104 min
  python3-cffi   1724 pass         187 min
  perl           2729 pass         219 min

python3-numpy stays parked too: patch 8 fixes its only failure (72 cases of
test_unary_spurious_fpexception), but under the 450 s limit numpy 2.5.4 is
killed before pytest prints its first result.

glib-2.0 is left parked. It passed one run on QEMU (308 pass, 31 min) & on the
board, but it was parked for intermittent failures, which one run cannot rule
out:
https://bugzilla.yoctoproject.org/show_bug.cgi?id=15891
https://bugzilla.yoctoproject.org/show_bug.cgi?id=16230

The numpy results above are for 2.5.3, before the rebase. numpy 2.5.4 with
patch 8, under QEMU with the 7200 s limit: 45993 pass, 0 fail, 87 min. One
earlier 2.5.4 run had a single failure, a wall-clock check in f2py
(test_nameargspattern_backtracking) that requires a regex search to take under
0.2 s & measured 0.22 s under TCG; it passed on the rerun.

OOHehir (8):
  strace: skip qual_fault-syscall.test on riscv64
  ptest-packagelists.inc: re-enable strace for riscv64
  ptest-packagelists.inc: re-enable python3 for riscv64
  lttng-tools: skip kernel cases when kernel tests are disabled
  tcl, tcl8: anchor the musl unixInit-3 skip to top-level SKIP lines
  tcl, tcl8: skip binary-40.3 on RISC-V
  ptest-packagelists.inc: re-enable tcl8 for riscv64
  python3-numpy: call libm for ceil/floor/trunc on riscv64

 .../distro/include/ptest-packagelists.inc     |   7 +-
 .../python/python3-numpy_2.5.4.bb             |   5 +
 meta/recipes-devtools/strace/strace_7.2.bb    |  12 ++
 meta/recipes-devtools/tcltk/tcl/run-ptest     |   5 +
 meta/recipes-devtools/tcltk/tcl_9.1.0.bb      |   2 +-
 meta/recipes-devtools/tcltk8/tcl8/run-ptest   |   5 +
 meta/recipes-devtools/tcltk8/tcl8_8.6.18.bb   |   2 +-
 ...our-LTTNG_TOOLS_DISABLE_KERNEL_TESTS.patch | 108 ++++++++++++++++++
 .../lttng/lttng-tools_2.16.0.bb               |   1 +
 9 files changed, 140 insertions(+), 7 deletions(-)
 create mode 100644 meta/recipes-kernel/lttng/lttng-tools/0001-tests-honour-LTTNG_TOOLS_DISABLE_KERNEL_TESTS.patch

-- 
2.43.0



^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH v2 1/8] strace: skip qual_fault-syscall.test on riscv64
  2026-10-17 11:23 ` [PATCH v2 0/8] riscv64 ptest fixes OOHehir
@ 2026-10-17 11:23   ` OOHehir
  2026-10-17 11:23   ` [PATCH v2 2/8] ptest-packagelists.inc: re-enable strace for riscv64 OOHehir
                     ` (7 subsequent siblings)
  8 siblings, 0 replies; 20+ messages in thread
From: OOHehir @ 2026-10-17 11:23 UTC (permalink / raw)
  To: openembedded-core; +Cc: raj.khem, tgamblin, mathieu.dubois-briand, OOHehir

On qemuriscv64, the strace ptest goes 283 s without output while
qual_fault-syscall.test finishes. That is 63% of the 450 s ptest-runner
limit, leaving little margin on a loaded autobuilder, so skip it there
before strace is re-enabled for riscv64.

The longest gaps between outputs in core-image-ptest-strace on
qemuriscv64 (make -j4, every output line timestamped), with the test
that ended each:

- qual_fault-syscall.test (283 s)
- filtering_syscall-syntax.test (139 s)
- trace_creds.gen.test (90 s)
- strace--tips-full.test (65 s)

The rest are under 50 s.

strace is not machine-specific, so the skip is keyed on riscv64, as the
gnutls skips in cc848c403a are. It therefore also applies to riscv64
hardware, where the test passes (VisionFive 2).

Signed-off-by: OOHehir <oo.hehir@gmail.com>
---
 meta/recipes-devtools/strace/strace_7.2.bb | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/meta/recipes-devtools/strace/strace_7.2.bb b/meta/recipes-devtools/strace/strace_7.2.bb
index 451ffa6f88..3f7aaab3e6 100644
--- a/meta/recipes-devtools/strace/strace_7.2.bb
+++ b/meta/recipes-devtools/strace/strace_7.2.bb
@@ -57,6 +57,18 @@ do_install_ptest() {
 	    -i ${D}/${PTEST_PATH}/${TESTDIR}/Makefile
 }
 
+# Too long without output for ptest-runner on qemuriscv64. Keyed on riscv64, as
+# strace is not machine-specific, so also skipped on riscv64 hardware.
+STRACE_PTEST_SKIP ?= ""
+STRACE_PTEST_SKIP:riscv64 = "qual_fault-syscall"
+
+do_install_ptest:append() {
+	for t in ${STRACE_PTEST_SKIP}; do
+		sed -i -e '1a . "${srcdir=.}/init.sh"\nskip_ "Too slow under QEMU on riscv64"' \
+		    ${D}${PTEST_PATH}/${TESTDIR}/$t.test
+	done
+}
+
 RDEPENDS:${PN}-ptest += "make coreutils grep gawk sed locale-base-en-us"
 
 BBCLASSEXTEND = "native"
-- 
2.43.0



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH v2 2/8] ptest-packagelists.inc: re-enable strace for riscv64
  2026-10-17 11:23 ` [PATCH v2 0/8] riscv64 ptest fixes OOHehir
  2026-10-17 11:23   ` [PATCH v2 1/8] strace: skip qual_fault-syscall.test on riscv64 OOHehir
@ 2026-10-17 11:23   ` OOHehir
  2026-10-17 11:23   ` [PATCH v2 3/8] ptest-packagelists.inc: re-enable python3 " OOHehir
                     ` (6 subsequent siblings)
  8 siblings, 0 replies; 20+ messages in thread
From: OOHehir @ 2026-10-17 11:23 UTC (permalink / raw)
  To: openembedded-core; +Cc: raj.khem, tgamblin, mathieu.dubois-briand, OOHehir

strace was parked with the other failing riscv64 ptests in 22736c5281 &
passes now. core-image-ptest-strace on qemuriscv64, with the previous
commit: 1081 pass, 0 fail, in 24 min. On a VisionFive 2 (JH7110): 1212
pass, 0 fail.

Signed-off-by: OOHehir <oo.hehir@gmail.com>
---
 meta/conf/distro/include/ptest-packagelists.inc | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/meta/conf/distro/include/ptest-packagelists.inc b/meta/conf/distro/include/ptest-packagelists.inc
index 2bd11b1706..5e99b59d4a 100644
--- a/meta/conf/distro/include/ptest-packagelists.inc
+++ b/meta/conf/distro/include/ptest-packagelists.inc
@@ -167,8 +167,8 @@ PTESTS_PROBLEMS:append:riscv32 = " lttng-tools strace"
 PTESTS_SLOW:append:libc-musl = " libc-test"
 
 # These tests don't yet pass for riscv64
-PTESTS_SLOW:remove:riscv64 = "tcl tcl8 python3-cffi strace lttng-tools python3-numpy perl glib-2.0 zstd libpcap"
-PTESTS_PROBLEMS:append:riscv64 = " tcl tcl8 python3-cffi strace lttng-tools python3-numpy perl glib-2.0 zstd libpcap"
+PTESTS_SLOW:remove:riscv64 = "tcl tcl8 python3-cffi lttng-tools python3-numpy perl glib-2.0 zstd libpcap"
+PTESTS_PROBLEMS:append:riscv64 = " tcl tcl8 python3-cffi lttng-tools python3-numpy perl glib-2.0 zstd libpcap"
 
 # These tests don't yet pass for musl qemuarm64
 PTESTS_SLOW:remove:libc-musl:qemuarm64 = "strace perl gnutls glib-2.0"
-- 
2.43.0



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH v2 3/8] ptest-packagelists.inc: re-enable python3 for riscv64
  2026-10-17 11:23 ` [PATCH v2 0/8] riscv64 ptest fixes OOHehir
  2026-10-17 11:23   ` [PATCH v2 1/8] strace: skip qual_fault-syscall.test on riscv64 OOHehir
  2026-10-17 11:23   ` [PATCH v2 2/8] ptest-packagelists.inc: re-enable strace for riscv64 OOHehir
@ 2026-10-17 11:23   ` OOHehir
  2026-10-17 11:23   ` [PATCH v2 4/8] lttng-tools: skip kernel cases when kernel tests are disabled OOHehir
                     ` (5 subsequent siblings)
  8 siblings, 0 replies; 20+ messages in thread
From: OOHehir @ 2026-10-17 11:23 UTC (permalink / raw)
  To: openembedded-core; +Cc: raj.khem, tgamblin, mathieu.dubois-briand, OOHehir

python3 was parked in adc448b19e because it hung on qemuriscv64, still
running after 42000 s. It no longer hangs. core-image-ptest-python3 on
qemuriscv64, in two runs: 44546 & 44548 pass, 0 fail, 71 min each. On a
VisionFive 2 (JH7110): 44698 pass, 0 fail.

Signed-off-by: OOHehir <oo.hehir@gmail.com>
---
 meta/conf/distro/include/ptest-packagelists.inc | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/meta/conf/distro/include/ptest-packagelists.inc b/meta/conf/distro/include/ptest-packagelists.inc
index 5e99b59d4a..97c6e35050 100644
--- a/meta/conf/distro/include/ptest-packagelists.inc
+++ b/meta/conf/distro/include/ptest-packagelists.inc
@@ -159,9 +159,6 @@ PTESTS_SLOW = "\
     zstd \
 "
 
-# python3 ptests hang on qemuriscv64
-PTESTS_SLOW:remove:riscv64 = "python3"
-PTESTS_PROBLEMS:append:riscv64 = " python3"
 PTESTS_SLOW:remove:riscv32 = "lttng-tools strace "
 PTESTS_PROBLEMS:append:riscv32 = " lttng-tools strace"
 PTESTS_SLOW:append:libc-musl = " libc-test"
-- 
2.43.0



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH v2 4/8] lttng-tools: skip kernel cases when kernel tests are disabled
  2026-10-17 11:23 ` [PATCH v2 0/8] riscv64 ptest fixes OOHehir
                     ` (2 preceding siblings ...)
  2026-10-17 11:23   ` [PATCH v2 3/8] ptest-packagelists.inc: re-enable python3 " OOHehir
@ 2026-10-17 11:23   ` OOHehir
  2026-10-17 11:23   ` [PATCH v2 5/8] tcl, tcl8: anchor the musl unixInit-3 skip to top-level SKIP lines OOHehir
                     ` (4 subsequent siblings)
  8 siblings, 0 replies; 20+ messages in thread
From: OOHehir @ 2026-10-17 11:23 UTC (permalink / raw)
  To: openembedded-core; +Cc: raj.khem, tgamblin, mathieu.dubois-briand, OOHehir

run-ptest sets LTTNG_TOOLS_DISABLE_KERNEL_TESTS when lttng-modules is not
installed, as on riscv64, but kernel/test_event_disable.py &
tools/save-load/test_save_load.py check only for root & fail with "Kernel
tracer not available". Carry the fix sent upstream.

Signed-off-by: OOHehir <oo.hehir@gmail.com>
---
 ...our-LTTNG_TOOLS_DISABLE_KERNEL_TESTS.patch | 108 ++++++++++++++++++
 .../lttng/lttng-tools_2.16.0.bb               |   1 +
 2 files changed, 109 insertions(+)
 create mode 100644 meta/recipes-kernel/lttng/lttng-tools/0001-tests-honour-LTTNG_TOOLS_DISABLE_KERNEL_TESTS.patch

diff --git a/meta/recipes-kernel/lttng/lttng-tools/0001-tests-honour-LTTNG_TOOLS_DISABLE_KERNEL_TESTS.patch b/meta/recipes-kernel/lttng/lttng-tools/0001-tests-honour-LTTNG_TOOLS_DISABLE_KERNEL_TESTS.patch
new file mode 100644
index 0000000000..ca041e8da8
--- /dev/null
+++ b/meta/recipes-kernel/lttng/lttng-tools/0001-tests-honour-LTTNG_TOOLS_DISABLE_KERNEL_TESTS.patch
@@ -0,0 +1,108 @@
+From f56f36ecd7481d96c99876e8a6f4a609197e7132 Mon Sep 17 00:00:00 2001
+From: OOHehir <oo.hehir@gmail.com>
+Date: Tue, 13 Oct 2026 09:41:51 +0100
+Subject: [PATCH] Fix: tests: honour LTTNG_TOOLS_DISABLE_KERNEL_TESTS in two
+ Python tests
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+OBSERVED ISSUE
+━━━━━━━━━━━━━━
+On a target without lttng-modules, kernel/test_event_disable.py & the
+kernel cases of tools/save-load/test_save_load.py fail with "Kernel tracer
+not available", although the test run sets LTTNG_TOOLS_DISABLE_KERNEL_TESTS=1.
+Observed with the Yocto Project ptest on riscv64, which ships no lttng-modules.
+
+CAUSE
+━━━━━
+Both scripts only check that they run as root before running kernel cases,
+while the other Python tests use lttngtest._Environment.run_kernel_tests(),
+which also honours LTTNG_TOOLS_DISABLE_KERNEL_TESTS.
+
+SOLUTION
+━━━━━━━━
+Use run_kernel_tests() in both scripts. It checks for root as before, & also
+honours LTTNG_TOOLS_DISABLE_KERNEL_TESTS.
+
+Under review on Gerrit: https://review.lttng.org/c/lttng-tools/+/18903
+
+Upstream-Status: Submitted [https://lists.lttng.org/pipermail/lttng-dev/2026-October/031100.html]
+Signed-off-by: OOHehir <oo.hehir@gmail.com>
+---
+ tests/regression/kernel/test_event_disable.py      | 7 ++-----
+ tests/regression/tools/save-load/test_save_load.py | 9 ++++-----
+ 2 files changed, 6 insertions(+), 10 deletions(-)
+
+diff --git a/tests/regression/kernel/test_event_disable.py b/tests/regression/kernel/test_event_disable.py
+index da9f146..a373544 100755
+--- a/tests/regression/kernel/test_event_disable.py
++++ b/tests/regression/kernel/test_event_disable.py
+@@ -15,7 +15,6 @@ Validates that disabling events works correctly:
+ - Disabling by name disables all matching rules regardless of filters
+ """
+ 
+-import os
+ import pathlib
+ import sys
+ import traceback
+@@ -307,11 +306,9 @@ if __name__ == "__main__":
+         ),
+     ]
+ 
+-    is_root = os.getuid() == 0
+-
+-    if not is_root:
++    if not lttngtest._Environment.run_kernel_tests():
+         tap = lttngtest.TapGenerator(len(kernel_tests))
+-        tap.skip_all_remaining("Kernel tests require root privileges")
++        tap.skip_all_remaining("Kernel tests not enabled")
+         sys.exit(0)
+ 
+     tap = lttngtest.TapGenerator(len(kernel_tests))
+diff --git a/tests/regression/tools/save-load/test_save_load.py b/tests/regression/tools/save-load/test_save_load.py
+index 9dd8042..1983263 100755
+--- a/tests/regression/tools/save-load/test_save_load.py
++++ b/tests/regression/tools/save-load/test_save_load.py
+@@ -13,7 +13,6 @@ through save/load cycles, including:
+ - Kernel syscalls and tracepoints
+ """
+ 
+-import os
+ import pathlib
+ import sys
+ import traceback
+@@ -953,11 +952,11 @@ if __name__ == "__main__":
+         ),
+     ]
+ 
+-    is_root = os.getuid() == 0
++    run_kernel_tests = lttngtest._Environment.run_kernel_tests()
+     allows_destructive = lttngtest._Environment.allows_destructive()
+ 
+     total_tests = len(user_tests) + len(agent_tests)
+-    if is_root:
++    if run_kernel_tests:
+         total_tests += len(kernel_tests)
+         if allows_destructive:
+             total_tests += len(destructive_kernel_tests)
+@@ -971,7 +970,7 @@ if __name__ == "__main__":
+         for test_name, test_func, kwargs in agent_tests:
+             run_test(tap, test_env, test_func, test_name, **kwargs)
+ 
+-    if is_root:
++    if run_kernel_tests:
+         with lttngtest.test_environment(
+             with_sessiond=True, log=tap.diagnostic, enable_kernel_domain=True
+         ) as test_env:
+@@ -986,6 +985,6 @@ if __name__ == "__main__":
+                     "Skipping destructive kernel tests (LTTNG_ENABLE_DESTRUCTIVE_TESTS not set)"
+                 )
+     else:
+-        tap.diagnostic("Skipping kernel tests (not running as root)")
++        tap.diagnostic("Skipping kernel tests (not enabled)")
+ 
+     sys.exit(0 if tap.is_successful else 1)
+-- 
+2.43.0
+
diff --git a/meta/recipes-kernel/lttng/lttng-tools_2.16.0.bb b/meta/recipes-kernel/lttng/lttng-tools_2.16.0.bb
index cfc16ed6c7..347bdcc273 100644
--- a/meta/recipes-kernel/lttng/lttng-tools_2.16.0.bb
+++ b/meta/recipes-kernel/lttng/lttng-tools_2.16.0.bb
@@ -72,6 +72,7 @@ SRC_URI = "https://lttng.org/files/lttng-tools/lttng-tools-${PV}.tar.bz2 \
            file://disable-tests2.patch \
            file://0001-m4-ax_am_macros_static.m4-do-not-write-generation-da.patch \
            file://muslfix.patch \
+           file://0001-tests-honour-LTTNG_TOOLS_DISABLE_KERNEL_TESTS.patch \
            "
 
 SRC_URI[sha256sum] = "b8b3244894e49e773d4942b8899f768057974edf75c18dbb48b65bb123c7b2c7"
-- 
2.43.0



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH v2 5/8] tcl, tcl8: anchor the musl unixInit-3 skip to top-level SKIP lines
  2026-10-17 11:23 ` [PATCH v2 0/8] riscv64 ptest fixes OOHehir
                     ` (3 preceding siblings ...)
  2026-10-17 11:23   ` [PATCH v2 4/8] lttng-tools: skip kernel cases when kernel tests are disabled OOHehir
@ 2026-10-17 11:23   ` OOHehir
  2026-10-17 11:23   ` [PATCH v2 6/8] tcl, tcl8: skip binary-40.3 on RISC-V OOHehir
                     ` (3 subsequent siblings)
  8 siblings, 0 replies; 20+ messages in thread
From: OOHehir @ 2026-10-17 11:23 UTC (permalink / raw)
  To: openembedded-core; +Cc: raj.khem, tgamblin, mathieu.dubois-briand, OOHehir

On musl, do_install_ptest adds the unixInit-3 skip after every line of
run-ptest containing SKIP="$SKIP. A SKIP set inside a case arm then gets two
lines between ;; & esac, & run-ptest fails with a syntax error before running
any test. The next commit adds such an arm.

Signed-off-by: OOHehir <oo.hehir@gmail.com>
---
 meta/recipes-devtools/tcltk/tcl_9.1.0.bb    | 2 +-
 meta/recipes-devtools/tcltk8/tcl8_8.6.18.bb | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/meta/recipes-devtools/tcltk/tcl_9.1.0.bb b/meta/recipes-devtools/tcltk/tcl_9.1.0.bb
index 6e8a97c729..77b6270f22 100644
--- a/meta/recipes-devtools/tcltk/tcl_9.1.0.bb
+++ b/meta/recipes-devtools/tcltk/tcl_9.1.0.bb
@@ -85,7 +85,7 @@ do_install_ptest() {
 
 do_install_ptest:append:libc-musl () {
 	# Assumes locales other than provided by musl-locales
-	sed -i '/SKIP="$SKIP.*$/a # unixInit-3* is suppressed due to hardcoded locale assumptions\nSKIP="$SKIP unixInit-3\\\*"' ${D}${PTEST_PATH}/run-ptest
+	sed -i '/^SKIP="$SKIP.*$/a # unixInit-3* is suppressed due to hardcoded locale assumptions\nSKIP="$SKIP unixInit-3\\\*"' ${D}${PTEST_PATH}/run-ptest
 }
 
 # Fix some paths that might be used by Tcl extensions
diff --git a/meta/recipes-devtools/tcltk8/tcl8_8.6.18.bb b/meta/recipes-devtools/tcltk8/tcl8_8.6.18.bb
index 2094c9935a..9199f635f4 100644
--- a/meta/recipes-devtools/tcltk8/tcl8_8.6.18.bb
+++ b/meta/recipes-devtools/tcltk8/tcl8_8.6.18.bb
@@ -86,7 +86,7 @@ do_install_ptest() {
 
 do_install_ptest:append:libc-musl () {
 	# Assumes locales other than provided by musl-locales
-	sed -i '/SKIP="$SKIP.*$/a # unixInit-3* is suppressed due to hardcoded locale assumptions\nSKIP="$SKIP unixInit-3\\\*"' ${D}${PTEST_PATH}/run-ptest
+	sed -i '/^SKIP="$SKIP.*$/a # unixInit-3* is suppressed due to hardcoded locale assumptions\nSKIP="$SKIP unixInit-3\\\*"' ${D}${PTEST_PATH}/run-ptest
 }
 
 # Fix some paths that might be used by Tcl extensions
-- 
2.43.0



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH v2 6/8] tcl, tcl8: skip binary-40.3 on RISC-V
  2026-10-17 11:23 ` [PATCH v2 0/8] riscv64 ptest fixes OOHehir
                     ` (4 preceding siblings ...)
  2026-10-17 11:23   ` [PATCH v2 5/8] tcl, tcl8: anchor the musl unixInit-3 skip to top-level SKIP lines OOHehir
@ 2026-10-17 11:23   ` OOHehir
  2026-10-17 11:23   ` [PATCH v2 7/8] ptest-packagelists.inc: re-enable tcl8 for riscv64 OOHehir
                     ` (2 subsequent siblings)
  8 siblings, 0 replies; 20+ messages in thread
From: OOHehir @ 2026-10-17 11:23 UTC (permalink / raw)
  To: openembedded-core; +Cc: raj.khem, tgamblin, mathieu.dubois-briand, OOHehir

binary-40.3 expects a negative float NaN to stay negative when widened to
double. RISC-V returns the positive canonical NaN instead, as the ISA requires,
so the test always fails there. Reported upstream on the matching MIPS ticket.

Signed-off-by: OOHehir <oo.hehir@gmail.com>
---
 meta/recipes-devtools/tcltk/tcl/run-ptest   | 5 +++++
 meta/recipes-devtools/tcltk8/tcl8/run-ptest | 5 +++++
 2 files changed, 10 insertions(+)

diff --git a/meta/recipes-devtools/tcltk/tcl/run-ptest b/meta/recipes-devtools/tcltk/tcl/run-ptest
index 18e03716e3..6991873978 100644
--- a/meta/recipes-devtools/tcltk/tcl/run-ptest
+++ b/meta/recipes-devtools/tcltk/tcl/run-ptest
@@ -38,6 +38,11 @@ SKIP="$SKIP httpProxy-\*"
 SKIP="$SKIP mutex-condition-\*"
 # Timer-related tests are going to be fragile (16324)
 SKIP="$SKIP timer-\*"
+# RISC-V widens a negative float NaN to the positive canonical NaN, so the
+# sign check fails: https://core.tcl-lang.org/tcl/tktview/bf029ced86
+case "$(uname -m)" in
+riscv*) SKIP="$SKIP binary-40.3" ;;
+esac
 
 # Run all tests in tests/*.test unless tests are specified as arguments
 TESTS=${*:-tests/*.test}
diff --git a/meta/recipes-devtools/tcltk8/tcl8/run-ptest b/meta/recipes-devtools/tcltk8/tcl8/run-ptest
index 40666ef851..aa0959f013 100644
--- a/meta/recipes-devtools/tcltk8/tcl8/run-ptest
+++ b/meta/recipes-devtools/tcltk8/tcl8/run-ptest
@@ -36,6 +36,11 @@ SKIP="$SKIP http11-\*"
 SKIP="$SKIP httpProxy-\*"
 # Timer-related tests are going to be fragile (16324)
 SKIP="$SKIP timer-\*"
+# RISC-V widens a negative float NaN to the positive canonical NaN, so the
+# sign check fails: https://core.tcl-lang.org/tcl/tktview/bf029ced86
+case "$(uname -m)" in
+riscv*) SKIP="$SKIP binary-40.3" ;;
+esac
 
 # Run all tests in tests/*.test unless tests are specified as arguments
 TESTS=${*:-tests/*.test}
-- 
2.43.0



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH v2 7/8] ptest-packagelists.inc: re-enable tcl8 for riscv64
  2026-10-17 11:23 ` [PATCH v2 0/8] riscv64 ptest fixes OOHehir
                     ` (5 preceding siblings ...)
  2026-10-17 11:23   ` [PATCH v2 6/8] tcl, tcl8: skip binary-40.3 on RISC-V OOHehir
@ 2026-10-17 11:23   ` OOHehir
  2026-10-17 11:23   ` [PATCH v2 8/8] python3-numpy: call libm for ceil/floor/trunc on riscv64 OOHehir
  2026-10-17 17:53   ` [PATCH v2 0/8] riscv64 ptest fixes Khem Raj
  8 siblings, 0 replies; 20+ messages in thread
From: OOHehir @ 2026-10-17 11:23 UTC (permalink / raw)
  To: openembedded-core; +Cc: raj.khem, tgamblin, mathieu.dubois-briand, OOHehir

The previous commit skips binary-40.3, its only failure on riscv64.
core-image-ptest-tcl8 on qemuriscv64: 152 pass, 0 fail, 607 s. On a
VisionFive 2 (JH7110), binary-40.3 was the only failure.

tcl stays parked: under TCG, unicodeNormalize.test prints nothing for more
than 450 s & ptest-runner kills it. The binary-40.3 skip still helps tcl on
hardware.

Signed-off-by: OOHehir <oo.hehir@gmail.com>
---
 meta/conf/distro/include/ptest-packagelists.inc | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/meta/conf/distro/include/ptest-packagelists.inc b/meta/conf/distro/include/ptest-packagelists.inc
index 97c6e35050..1b76023621 100644
--- a/meta/conf/distro/include/ptest-packagelists.inc
+++ b/meta/conf/distro/include/ptest-packagelists.inc
@@ -164,8 +164,8 @@ PTESTS_PROBLEMS:append:riscv32 = " lttng-tools strace"
 PTESTS_SLOW:append:libc-musl = " libc-test"
 
 # These tests don't yet pass for riscv64
-PTESTS_SLOW:remove:riscv64 = "tcl tcl8 python3-cffi lttng-tools python3-numpy perl glib-2.0 zstd libpcap"
-PTESTS_PROBLEMS:append:riscv64 = " tcl tcl8 python3-cffi lttng-tools python3-numpy perl glib-2.0 zstd libpcap"
+PTESTS_SLOW:remove:riscv64 = "tcl python3-cffi lttng-tools python3-numpy perl glib-2.0 zstd libpcap"
+PTESTS_PROBLEMS:append:riscv64 = " tcl python3-cffi lttng-tools python3-numpy perl glib-2.0 zstd libpcap"
 
 # These tests don't yet pass for musl qemuarm64
 PTESTS_SLOW:remove:libc-musl:qemuarm64 = "strace perl gnutls glib-2.0"
-- 
2.43.0



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH v2 8/8] python3-numpy: call libm for ceil/floor/trunc on riscv64
  2026-10-17 11:23 ` [PATCH v2 0/8] riscv64 ptest fixes OOHehir
                     ` (6 preceding siblings ...)
  2026-10-17 11:23   ` [PATCH v2 7/8] ptest-packagelists.inc: re-enable tcl8 for riscv64 OOHehir
@ 2026-10-17 11:23   ` OOHehir
  2026-10-17 17:53   ` [PATCH v2 0/8] riscv64 ptest fixes Khem Raj
  8 siblings, 0 replies; 20+ messages in thread
From: OOHehir @ 2026-10-17 11:23 UTC (permalink / raw)
  To: openembedded-core; +Cc: raj.khem, tgamblin, mathieu.dubois-briand, OOHehir

numpy builds with -std=c11, so GCC 15 onwards expands ceil/floor/trunc
inline on riscv64, & its first scheduling pass moves the fcvt above the
|x| < 2^52 check. ceil(+-inf) & ceil(1e300) then raise FE_INVALID, & the
72 cases of test_unary_spurious_fpexception fail. Confirmed as
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=127908.

-fno-fp-int-builtin-inexact makes GCC call libm, which handles these
inputs correctly. python3-numpy-ptest on a VisionFive 2 (JH7110), with
2.5.3: 45770 pass, 0 fail. On qemuriscv64 with PTEST_RUNNER_TIMEOUT = "7200",
with 2.5.4: 45993 pass, 0 fail.

Signed-off-by: OOHehir <oo.hehir@gmail.com>
---
 meta/recipes-devtools/python/python3-numpy_2.5.4.bb | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/meta/recipes-devtools/python/python3-numpy_2.5.4.bb b/meta/recipes-devtools/python/python3-numpy_2.5.4.bb
index 93aa356db1..275c49690b 100644
--- a/meta/recipes-devtools/python/python3-numpy_2.5.4.bb
+++ b/meta/recipes-devtools/python/python3-numpy_2.5.4.bb
@@ -26,6 +26,11 @@ PACKAGECONFIG[svml] = "-Ddisable-svml=false,-Ddisable-svml=true"
 # the overflow tests fail with compiler-rt on aarch64
 LDFLAGS:append:toolchain-clang:aarch64 = " -rtlib=libgcc -unwindlib=libgcc"
 
+# GCC 15+ inlines ceil/floor/trunc on riscv64 with the fcvt ahead of the range
+# check, so +-inf raises FE_INVALID; call libm instead. GCC PR 127908.
+CFLAGS:append:toolchain-gcc:riscv64 = " -fno-fp-int-builtin-inexact"
+CXXFLAGS:append:toolchain-gcc:riscv64 = " -fno-fp-int-builtin-inexact"
+
 # To ensure reproducibility, remove entries from __config__ which expose build
 # machine details, such as build paths, host paths, and hardware configuration.
 strip_build_info() {
-- 
2.43.0



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* Re: [PATCH v2 0/8] riscv64 ptest fixes
  2026-10-17 11:23 ` [PATCH v2 0/8] riscv64 ptest fixes OOHehir
                     ` (7 preceding siblings ...)
  2026-10-17 11:23   ` [PATCH v2 8/8] python3-numpy: call libm for ceil/floor/trunc on riscv64 OOHehir
@ 2026-10-17 17:53   ` Khem Raj
  8 siblings, 0 replies; 20+ messages in thread
From: Khem Raj @ 2026-10-17 17:53 UTC (permalink / raw)
  To: OOHehir; +Cc: openembedded-core, tgamblin, mathieu.dubois-briand, OOHehir

[-- Attachment #1: Type: text/plain, Size: 7208 bytes --]

I have looked at the patches, I think it improves the ptests on RV64 in
general, we may still see some issues on AB due to load etc. so waiting to
see the AB run results. Overall looks good, thanks for working on it.

On Sat, Oct 17, 2026 at 4:24 AM OOHehir <oo.hehir@gmail.com> wrote:

> From: OOHehir <40183643+OOHehir@users.noreply.github.com>
>
> Changes in v2:
> - New patch 5: on musl, the tcl & tcl8 recipes add a skip after every line
>   containing SKIP="$SKIP, so v1's skip inside a case arm left run-ptest
> with a
>   syntax error (reported by Mathieu Dubois-Briand). Building tcl & tcl8 to
>   do_install_ptest_base for qemux86-64 & syntax-checking the installed
>   run-ptest: v1 reproduces the autobuilder error on musl, v2 passes on
> musl &
>   glibc.
> - Patches 1 & 8: shorter recipe comments, no functional change.
>
> This series re-enables the strace, python3 & tcl8 ptests on riscv64 &
> fixes the
> three riscv64 failures that are not timeouts: lttng-tools, tcl/tcl8 &
> python3-numpy. Patches 2, 3 & 7 only edit the riscv64 lists in
> ptest-packagelists.inc; patch 1 skips one slow strace test on riscv64 &
> patches 4, 6 & 8 carry the fixes. Patch 5 makes the tcl recipes'
> musl sed safe for patch 6.
>
> I sent these results to Khem Raj & Trevor Gamblin before posting. Trevor
> suggested profiling the per-test durations under QEMU first; patch 1 skips
> the slowest test found (see "Per-test durations" below).
>
> Where to look:
> - Patch 8 works round a confirmed GCC 15+ bug:
>   https://gcc.gnu.org/bugzilla/show_bug.cgi?id=127908
>   GCC moves the float-to-integer conversion above the range check in its
>   inline ceil/floor/trunc, so ceil(+-inf) raises FE_INVALID.
>   -fno-fp-int-builtin-inexact makes GCC call libm instead.
> - Patch 4 carries an lttng-tools fix under review upstream:
>   https://review.lttng.org/c/lttng-tools/+/18903
> - Patch 6 skips binary-40.3, which expects a negative float NaN to stay
> negative
>   when widened to double. RISC-V returns the positive canonical NaN, as
> the ISA
>   requires. Reported on an existing MIPS ticket:
>   https://core.tcl-lang.org/tcl/tktview/bf029ced86
>
> Testing:
> - qemuriscv64: testimage of core-image-ptest-<pkg> with the autobuilder's
>   PTEST_RUNNER_TIMEOUT of 450 s (a test is killed after 450 s without
> output),
>   on my machine, a Xeon E5-1680 v3 from 2014 (a plough-horse rather than a
>   stallion). An autobuilder worker will be faster per core, but busier.
> - VisionFive 2 v1.3B (JH7110, 4x U74, 8 GB): each package in
>   core-image-minimal, ptest-runner -t 1800.
>
>   package  qemuriscv64                  VisionFive 2
>   strace   1081 pass, 0 fail, 24 min    1212 pass, 0 fail
>   python3  44546 pass, 0 fail, 71 min   44698 pass, 0 fail
>   tcl8     152 pass, 0 fail, 10 min     only failure was binary-40.3
>
> Per-test durations under QEMU (TCG), as the longest time without output is
> what the 450 s limit measures:
> - strace (make -j4, every output line timestamped): the longest gap is 283
> s,
>   ending with qual_fault-syscall.test, which patch 1 skips on riscv64.
> Next are
>   filtering_syscall-syntax.test (139 s), trace_creds.gen.test (90 s) &
>   strace--tips-full.test (65 s); the rest are under 50 s.
> - python3: regrtest -j4 prints a progress line at least every 30 s, so the
>   longest gap in the full run is around 30 s. Its slowest modules
>   (test_concurrent_futures.test_process_pool, about 17 min, & the
>   test_multiprocessing_* modules, 6-11 min) are made of many short cases:
> run
>   one at a time, no single case takes over 71 s
> (MiscTestCase.test_large_pool,
>   69-71 s in each start method). So I have not skipped anything there.
> - tcl8: tcltest prints once per test file. The longest is reg.test (115 s),
>   then regexp.test (70 s) & io.test (45 s).
>
> Still parked: tcl, lttng-tools, perl, python3-cffi, libpcap & zstd pass,
> but
> are too slow for the 450 s limit on my machine. Under TCG (QEMU's software
> CPU
> emulation), ptest-runner kills tcl in unicodeNormalize.test, lttng-tools in
> test_valid_filter, perl in t/re/regexp_qr_embed_thr (485 s alone, so perl
> may
> pass on a faster worker) & python3-cffi, each after 450 s without output.
> libpcap's run-ptest prints nothing until TESTrun finishes, which takes 9.5
> min
> even on the board. zstd's compression/window-resize.sh exceeds the 200 s
> per-case limit in cli-tests.
>
> To confirm that these fail only on time, I reran them under QEMU with this
> series, PTEST_RUNNER_TIMEOUT = "7200" & the cli-tests limit raised to 3600
> s
> (local changes, not in this series). All passed with 0 failures, as they
> do on
> the board:
>
>   zstd           43 pass            10 min
>   libpcap        14801 pass         24 min
>   tcl            175 test files     46 min
>   lttng-tools    2088 pass          85 min
>   python3-numpy  45769 pass        104 min
>   python3-cffi   1724 pass         187 min
>   perl           2729 pass         219 min
>
> python3-numpy stays parked too: patch 8 fixes its only failure (72 cases of
> test_unary_spurious_fpexception), but under the 450 s limit numpy 2.5.4 is
> killed before pytest prints its first result.
>
> glib-2.0 is left parked. It passed one run on QEMU (308 pass, 31 min) & on
> the
> board, but it was parked for intermittent failures, which one run cannot
> rule
> out:
> https://bugzilla.yoctoproject.org/show_bug.cgi?id=15891
> https://bugzilla.yoctoproject.org/show_bug.cgi?id=16230
>
> The numpy results above are for 2.5.3, before the rebase. numpy 2.5.4 with
> patch 8, under QEMU with the 7200 s limit: 45993 pass, 0 fail, 87 min. One
> earlier 2.5.4 run had a single failure, a wall-clock check in f2py
> (test_nameargspattern_backtracking) that requires a regex search to take
> under
> 0.2 s & measured 0.22 s under TCG; it passed on the rerun.
>
> OOHehir (8):
>   strace: skip qual_fault-syscall.test on riscv64
>   ptest-packagelists.inc: re-enable strace for riscv64
>   ptest-packagelists.inc: re-enable python3 for riscv64
>   lttng-tools: skip kernel cases when kernel tests are disabled
>   tcl, tcl8: anchor the musl unixInit-3 skip to top-level SKIP lines
>   tcl, tcl8: skip binary-40.3 on RISC-V
>   ptest-packagelists.inc: re-enable tcl8 for riscv64
>   python3-numpy: call libm for ceil/floor/trunc on riscv64
>
>  .../distro/include/ptest-packagelists.inc     |   7 +-
>  .../python/python3-numpy_2.5.4.bb             |   5 +
>  meta/recipes-devtools/strace/strace_7.2.bb    |  12 ++
>  meta/recipes-devtools/tcltk/tcl/run-ptest     |   5 +
>  meta/recipes-devtools/tcltk/tcl_9.1.0.bb      |   2 +-
>  meta/recipes-devtools/tcltk8/tcl8/run-ptest   |   5 +
>  meta/recipes-devtools/tcltk8/tcl8_8.6.18.bb   |   2 +-
>  ...our-LTTNG_TOOLS_DISABLE_KERNEL_TESTS.patch | 108 ++++++++++++++++++
>  .../lttng/lttng-tools_2.16.0.bb               |   1 +
>  9 files changed, 140 insertions(+), 7 deletions(-)
>  create mode 100644
> meta/recipes-kernel/lttng/lttng-tools/0001-tests-honour-LTTNG_TOOLS_DISABLE_KERNEL_TESTS.patch
>
> --
> 2.43.0
>
>

[-- Attachment #2: Type: text/html, Size: 8967 bytes --]

^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2026-10-17 17:54 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-16 20:45 [PATCH 0/7] riscv64 ptest fixes OOHehir
2026-10-16 20:45 ` [PATCH 1/7] strace: skip qual_fault-syscall.test on riscv64 OOHehir
2026-10-16 20:45 ` [PATCH 2/7] ptest-packagelists.inc: re-enable strace for riscv64 OOHehir
2026-10-16 20:45 ` [PATCH 3/7] ptest-packagelists.inc: re-enable python3 " OOHehir
2026-10-16 20:45 ` [PATCH 4/7] lttng-tools: skip kernel cases when kernel tests are disabled OOHehir
2026-10-16 20:45 ` [PATCH 5/7] tcl, tcl8: skip binary-40.3 on RISC-V OOHehir
2026-10-17 10:29   ` [OE-core] " Mathieu Dubois-Briand
2026-10-17 11:21     ` Owen O'Hehir
2026-10-16 20:45 ` [PATCH 6/7] ptest-packagelists.inc: re-enable tcl8 for riscv64 OOHehir
2026-10-16 20:45 ` [PATCH 7/7] python3-numpy: call libm for ceil/floor/trunc on riscv64 OOHehir
2026-10-17 11:23 ` [PATCH v2 0/8] riscv64 ptest fixes OOHehir
2026-10-17 11:23   ` [PATCH v2 1/8] strace: skip qual_fault-syscall.test on riscv64 OOHehir
2026-10-17 11:23   ` [PATCH v2 2/8] ptest-packagelists.inc: re-enable strace for riscv64 OOHehir
2026-10-17 11:23   ` [PATCH v2 3/8] ptest-packagelists.inc: re-enable python3 " OOHehir
2026-10-17 11:23   ` [PATCH v2 4/8] lttng-tools: skip kernel cases when kernel tests are disabled OOHehir
2026-10-17 11:23   ` [PATCH v2 5/8] tcl, tcl8: anchor the musl unixInit-3 skip to top-level SKIP lines OOHehir
2026-10-17 11:23   ` [PATCH v2 6/8] tcl, tcl8: skip binary-40.3 on RISC-V OOHehir
2026-10-17 11:23   ` [PATCH v2 7/8] ptest-packagelists.inc: re-enable tcl8 for riscv64 OOHehir
2026-10-17 11:23   ` [PATCH v2 8/8] python3-numpy: call libm for ceil/floor/trunc on riscv64 OOHehir
2026-10-17 17:53   ` [PATCH v2 0/8] riscv64 ptest fixes Khem Raj

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.