https://bugs.kde.org/show_bug.cgi?id=423963

--- Comment #28 from Tom Hughes <t...@compton.nu> ---
I think I know what's happening - the POST handler for clone is actually
running in both threads.

It works in the parent thread but when it tries to read the PIDFD in the child
thread it gets a nonsense value. Possibly Qt 6.1 changed something that affects
the value of that memory going in but my reading of the manual page says that
the value is only guaranteed to be available in the parent's memory on return
so it may just be chance that this appeared work before.

Try building valgrind with this patch and see if it helps:


diff --git a/coregrind/m_syswrap/syswrap-linux.c
b/coregrind/m_syswrap/syswrap-linux.c
index 5ae4e6613..c59d8ee26 100644
--- a/coregrind/m_syswrap/syswrap-linux.c
+++ b/coregrind/m_syswrap/syswrap-linux.c
@@ -940,7 +940,7 @@ PRE(sys_clone)
          ("Valgrind does not support general clone().");
    }

-   if (SUCCESS) {
+   if (SUCCESS && RES != 0) {
       if (ARG_FLAGS & (VKI_CLONE_PARENT_SETTID | VKI_CLONE_PIDFD))
          POST_MEM_WRITE(ARG3, sizeof(Int));
       if (ARG_FLAGS & (VKI_CLONE_CHILD_SETTID | VKI_CLONE_CHILD_CLEARTID))

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to