[Devel] [PATCH vz10] selftests/rseq: skip syscall_errors_test when libc owns the registration

Eva Kurchatova eva.kurchatova at virtuozzo.com
Fri Aug 21 18:24:53 MSK 2026


The test requires the calling thread to be unregistered and expects
EFAULT when registering an invalid address. glibc >= 2.35 registers
rseq for every thread at startup, so the kernel rejects the second
registration with EINVAL before it ever touches the address.

https://virtuozzo.atlassian.net/browse/VSTOR-139675
Feature: fix selftests
Signed-off-by: Eva Kurchatova <eva.kurchatova at virtuozzo.com>
---
 tools/testing/selftests/rseq/syscall_errors_test.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/tools/testing/selftests/rseq/syscall_errors_test.c b/tools/testing/selftests/rseq/syscall_errors_test.c
index a5d9e1f8a2dc..9e6bf6b1df96 100644
--- a/tools/testing/selftests/rseq/syscall_errors_test.c
+++ b/tools/testing/selftests/rseq/syscall_errors_test.c
@@ -34,6 +34,15 @@ int main(void)
 		goto error;
 	}
 
+	/*
+	 * The expectations below only hold for a thread which is not
+	 * registered, while glibc >= 2.35 registers every thread at startup.
+	 */
+	if (rseq_current_cpu_raw() >= 0) {
+		fprintf(stderr, "rseq is already registered, skipping\n");
+		return 4;
+	}
+
 	/* The current thread is NOT registered. */
 
 	/* EINVAL */
-- 
2.55.0



More information about the Devel mailing list