[PATCH] LoongArch: Fix intermittent nptl/tst-cancel32 failure
mengqinggang
mengqinggang@loongson.cn
Wed Aug 5 08:03:34 GMT 2026
The nptl/tst-cancel32 test fails intermittently on LoongArch
with SIGSEGV at __longjmp:
0x7ffff7de7f6c <__longjmp+28> rotri.d $sp, $t0, 0x11
0x7ffff7de7f70 <__longjmp+32> xor $sp, $sp, $t1
rotri.d and xor are expanded from PTR_DEMANGLE2.
If the thread is cancelled between the rotri.d and xor,
an incomplete sp register causes the SIGSEGV.
Change the destination register of rotri.d to avoid an incomplete sp.
---
sysdeps/unix/sysv/linux/loongarch/pointer_guard-asm.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/sysdeps/unix/sysv/linux/loongarch/pointer_guard-asm.h b/sysdeps/unix/sysv/linux/loongarch/pointer_guard-asm.h
index 75498545cb..24e27e4092 100644
--- a/sysdeps/unix/sysv/linux/loongarch/pointer_guard-asm.h
+++ b/sysdeps/unix/sysv/linux/loongarch/pointer_guard-asm.h
@@ -40,8 +40,8 @@
xor dst, src, guard; \
rotri.d dst, dst, 47;
# define PTR_DEMANGLE2(dst, src, guard) \
- rotri.d dst, src, 17; \
- xor dst, dst, guard;
+ rotri.d src, src, 17; \
+ xor dst, src, guard;
#endif
#endif /* POINTER_GUARD_ASM_H */
--
2.34.1
More information about the Libc-alpha
mailing list